我有一个模型:

public class MyListModel
{
    public int ID {get;set;}
    public List<User> Users{get;set;}
}

如何使用Html.EditorFor方法一个foreach内?

@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>
}

加的用户的至少一个属性一些隐变量是必需的:

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

不是你会叫优雅,但它相对于工作在你的岗位活动绑定。

是否有明确使用自己foreach任何其它原因(例如开)?你可以做的User class,使@Html.EditorFor(model=>model.Users)自定义编辑器(或显示器)帮手。剃刀将在内部使用的foreach用于与自己的自定义帮助器处理每个元素。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top