将具有集合引用的模型发布到控制器
本文关键字:控制器 模型 集合 引用 | 更新日期: 2023-09-27 18:31:00
我有一个模型,它的属性是名称,电子邮件...等。还有一个集合。在视图中,我编辑属性并保持集合不变。
当我尝试提交表单时,它会发送更改和未标记的值,但集合丢失。如何处理?
HTML.HiddenFor()
- 不起作用。
它失去了所有未在形式上更改的实用程序!(以我使用的形式HTML.EditorFor(Model => Model.Name)
)
编辑:视图:
<% using (Html.BeginForm("Action", "Controller", FormMethod.Post))
{%>
<%: Html.AntiForgeryToken()%>
<table>
<tr>
<td>Name: </td>
<td>
<%: Html.EditorFor(Model => Model.Name) %></td>
</tr>
<tr>
<td>Phone: </td>
<td>
<%: Html.EditorFor(Model => Model.Phone) %></td>
</tr>
@h@</table>
<%} %>
控制器
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SaveModelDealer(User ModelReceived)
{
try
{
if (ModelState.IsValid)
{
using (Context db = new Context ())
{
System.Diagnostics.Debug.WriteLine(" " + ModelReceived.ListOfPhones.Count);
}
return View();
}
else
{
}
}
catch (Exception)
{
}
}
只有表单中的属性才会通过 post 发送回服务器。您应该在发布后重新填充集合,就像在HttpGet
操作中所做的那样。
如果要保留表单中的项目,但不显示它们,则可以使用隐藏字段。喜欢这个:
@Html.HiddenFor(m => m.ID);
另外,看看这个问题,我举了一个例子来解决你的问题。