MVC 4 中列表的自定义模型绑定
将项目列表 (IList) 绑定到 MVC 中的视图是一个常见的挑战对于开发人员来说。虽然存在较旧的解决方案,但 MVC 4 引入了简化流程的增强功能。
对于列表中的每个项目都需要自己的数据输入表单的情况,请考虑按如下方式构建 ViewModel:
public class MyViewModel { public List<Person> Persons{get;set;} }
在视图中,BeginForm 中:
@model MyViewModel @for( int i = 0; i < Model.Persons.Count(); ++i) { @Html.HiddenFor(m => m.Persons[i].PersonId) @Html.EditorFor(m => m.Persons[i].FirstName) @Html.EditorFor(m => m.Persons[i].LastName) }
HttpPost 操作将接收更新的视图模型:
[HttpPost]public ViewResult(MyViewModel vm) { ... }
请注意,在回发时,只有表单中具有相应输入的属性才会具有值。这是因为 MVC 的模型绑定会查找连续的 ID,并在遇到间隙后停止绑定。因此,确保列表中的所有项目都具有有效 ID 并且表单中没有空白非常重要。
以上是如何在 MVC 4 中有效地将项目列表绑定到视图?的详细内容。更多信息请关注PHP中文网其他相关文章!