发布模型,其中包含对Controller的集合引用

时间:2013-09-11 13:39:44

标签: c# asp.net asp.net-mvc

我有一个具有名称,电子邮件等属性的模型。还有一个集合。 在视图中我编辑属性,我保持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)
            {
            }
        }

1 个答案:

答案 0 :(得分:0)

只有表单中的属性才会通过帖子发送回服务器。您应该使用与HttpGet操作相同的方式在帖子后重新填充集合。

如果要在表单中保留项目但不显示它们,则可以使用隐藏字段。像这样:

@Html.HiddenFor(m => m.ID);

另外,请查看this question,我举了一个例子来解决您的问题。