如何在一个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理这种情况。