我有一个模特:
public class MyListModel
{
public int ID {get;set;}
public List<User> Users{get;set;}
}
如何在foreach中使用Html.EditorFor方法?
@model MyListModel
<table>
<tr>
<th></th>
</tr>
@foreach (var item in Model.Users) {
<tr>
<td>
@Html.EditorFor(item.Enabled)
</td>
</tr>
}
</table>
答案 0 :(得分:61)
@Html.EditorFor(x=> item.Enabled)
有人多次指出,将这样的模型发布回服务器默认情况下不能在mvc中运行。
要在循环中使用EditorFor
正确编辑,for
应该用作:
@for(var i = 0; i< Model.Users.Count;i++){
Html.EditorFor(i=>Model.Users[i])
}
答案 1 :(得分:12)
@for (var i = 0; i < Model.Users.Count; i++)
{
<tr>
<td>@Html.EditorFor(model => model.Users[i].Enabled)</td>
<td>@Html.EditorFor(model => model.Users[i].FirstName)</td>
<td>@Html.EditorFor(model => model.Users[i].LastName)</td>
</tr>
}
此外,还需要为用户的至少一个属性设置一些隐藏变量:
@for (var i = 0; i < Model.Users.Count; i++)
{
@Html.HiddenFor(model => model.Users[i].FirstName)
}
不是你称之为优雅的,但它适用于你的后期行动中的绑定。
答案 2 :(得分:1)
是否还有其他原因(例如除外)自己明确使用foreach
?您可以为User class
创建自定义编辑器(或显示)帮助程序并生成@Html.EditorFor(model=>model.Users)
。 Razor将在内部使用foreach
来处理您的自定义助手的每个元素。
对于那些访问这个问题的人来说,只是一个想法,真的不知道如何管理这个案例。