My view:
@foreach(var item in Model.List)
{
@Html.HiddenFor(model => item.UserId)
@Html.HiddenFor(model => item.Name)
@Html.HiddenFor(model => item.Age)
@Html.CheckBoxFor(model => item.IsChecked, new { id = item.UserId })
<label>@item.Name</label>
}
我的控制器:
[HttpPost]
public ActionResult Create(MyModel Model)
{
..
Model.List
一片空白?
该列表填充正常GET
。然而,关于POST
(这个特定的视图是一种形式)Model.List
一片空白。我尝试过使用HiddenFor
帮助者,但尚未成功。
任何建议/答案表示赞赏。谢谢。
你需要使用一个for
循环而不是foreach
循环使数据绑定能够正确地与集合一起工作。
因此,不要执行 foreach 循环,而是将代码更改为如下所示:
@for (var i = 0; i < Model.List.Count(); i++)
{
@Html.HiddenFor(model => Model.List[i].UserId)
@Html.HiddenFor(model => Model.List[i].Name)
@Html.HiddenFor(model => Model.List[i].Age)
@Html.CheckBoxFor(model => Model.List[i].IsChecked, new { id = Model.List[i].UserId })
<label>@Model.List[i].Name</label>
}
这使得 ModelBinder 能够跟踪您尝试绑定的集合中项目的索引。
如果您在完成此操作后查看生成的 HTML,您会注意到生成的输入控件将如下所示:
<input type="hidden" name="List[0].IsChecked" />
这使得模型绑定器能够知道它绑定到列表中的哪个项目。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)