我有一个包含几个List<SubViewModel>
(名称,地址等)的PersonViewModel 。
我有一个HTML表单,其中包含每个SubViewModel的表格,用户可以在其中更新,添加,删除项目并将其设置为该人的主要条目。
名称的简化表:
@foreach (PersonNameViewModel name in Model.Names)
{
<tr>
<td>
@Html.DisplayFor(modelItem => name.FullName)
</td>
<td>
@Html.DisplayFor(modelItem => name.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => name.MiddleName)
</td>
<td>
@Html.DisplayFor(modelItem => name.LastName)
</td>
<td class="center">
@Html.RadioButtonFor(modelItem => name.IsPrimary, "")
</td>
<td class="center">
@Html.CheckBoxFor(modelItem => name.ToDelete)
</td>
</tr>
}
从这里开始,我不知道当用户提交表单时如何将所有数据返回到PersonViewModel中,以更新个人记录。如果我PersonViewModel
在POST控制器中简单接受a ,则它完全为空。我查看了FormCollection,但不确定是否适合此操作。有经验的人可以为我指出正确的方向来建立模型以进行更新吗?非常感谢你。
每个人的答案都是正确的,但是如果您想更新人们的信息,则需要使用Html Helper Editor
NOT Display
。另外,您仍然可以foreach
在视图中使用它,只需如下更改即可:
@foreach (var name in Model.Names.Select((value, i) => new { i, value }))
{
<tr>
<td>
@Html.EditorFor(m => m.Names[@name.i].FullName)
</td>
<td>
@Html.EditorFor(m => m.Names[@name.i].FirstName)
</td>
<td>
@Html.EditorFor(m => m.Names[@name.i].MiddleName)
</td>
<td>
@Html.EditorFor(m => m.Names[@name.i].LastName)
</td>
<td class="center">
@Html.RadioButtonFor(m => m.Names[@name.i].IsPrimary,"")
</td>
<td class="center">
@Html.CheckBoxFor(m => m.Names[@name.i].ToDelete)
</td>
</tr>
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句