39

我有一个模型:

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>
4

3 回答 3

67
@Html.EditorFor(x=> item.Enabled)

已经多次指出,默认情况下,将这样的模型发布回服务器在 mvc 中不起作用。EditorFor为了在循环中正确编辑-for应该使用如下:

 @for(var i = 0; i< Model.Users.Count;i++){
      Html.EditorFor(i=>Model.Users[i])
 }
于 2010-01-01T00:35:57.053 回答
15
@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>
}

此外,还需要 User 的至少一个属性的一些隐藏变量:

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

不是您所说的优雅,但它适用于您的后期操作中的绑定。

于 2013-11-26T06:29:24.473 回答
1

是否有任何其他原因(示例除外)显式使用您foreach自己?User class您可以为和 make制作自定义编辑器(或显示)助手@Html.EditorFor(model=>model.Users)。Razor 将在foreach内部使用自定义助手处理每个元素。

对于那些真正不知道如何管理这些案件的人来说,这只是一个想法。

于 2016-04-14T02:07:54.313 回答