0

我有一个模型,它具有名称、电子邮件...等属性。还有一个集合。在视图中,我编辑属性并保持集合不变。

当我尝试提交表单时,它会发送已更改和未更改的值,但 Collection 已丢失。如何处理?

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)
            {
            }
        }
4

1 回答 1

0

只有表单内的属性会通过帖子发送回服务器。您应该在发布后重新填充集合,就像您在HttpGet操作中所做的那样。

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

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

另外,看看这个问题,我举了一个例子来解决你的问题。

于 2013-09-11T13:47:22.733 回答