如何在一个foreach中使用EditorFor

我有一个模型:

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> 
 @Html.EditorFor(x=> item.Enabled) 

已经多次指出,默认情况下,将这种模型发回服务器将无法在mvc中工作。 为了正确编辑与EditorFor在一个循环中 – for应该使用在:

  @for(var i = 0; i< Model.Users.Count;i++){ Html.EditorFor(i=>Model.Users[i]) } 
 @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> } 

加上用户的至less一个属性的一些隐藏variables是必需的:

 @for (var i = 0; i < Model.Users.Count; i++) { @Html.HiddenFor(model => model.Users[i].FirstName) } 

不是你会称之为优雅的,但它在你的发布行为绑定。

除了明确使用foreach外,还有其他什么原因吗? 您可以为User class创build自定义编辑器(或显示)帮助器,并使@Html.EditorFor(model=>model.Users) 。 Razor将在内部使用foreach来处理每个元素与您的自定义助手。

对于那些访问这个问题的人来说,只是一个想法,真的不知道如何pipe理这种情况。