gpt4 book ai didi

c# - ASP.NET MVC 复杂模型更新

转载 作者:太空宇宙 更新时间:2023-11-03 20:09:42 25 4
gpt4 key购买 nike

我有一个由多个 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 Controller 中,它完全是空的。我查看了 FormCollection,但我不确定这是否适合。有经验的人可以指出正确的方向来构建我的模型以进行更新吗?非常感谢。

最佳答案

每个人的答案都是正确的,但是如果你想更新人的信息,你需要使用 Html Helper Editor NOT Display。此外,您仍然可以在 View 中使用 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>
}

关于c# - ASP.NET MVC 复杂模型更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20842935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com