我有一个具有名称,电子邮件等属性的模型。还有一个集合。 在视图中我编辑属性,我保持Collection UNchanged。
当我尝试提交表单时,它会发送已更改和未更改的值,但收集将丢失。如何处理?
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)
{
}
}
答案 0 :(得分:0)
只有表单中的属性才会通过帖子发送回服务器。您应该使用与HttpGet
操作相同的方式在帖子后重新填充集合。
如果要在表单中保留项目但不显示它们,则可以使用隐藏字段。像这样:
@Html.HiddenFor(m => m.ID);
另外,请查看this question,我举了一个例子来解决您的问题。