Подтвердить что ты не робот

Как использовать EditorFor внутри foreach

У меня есть модель:

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

Ответ 1

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

Было указано много раз, что публикация такой модели на сервере не будет работать в mvc по умолчанию. Для правильного редактирования с помощью EditorFor в цикле - for следует использовать как в:

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

Ответ 2

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

Не то, что вы бы назвали элегантным, но оно работает с привязкой к вашему сообщению.

Ответ 3

Есть ли другая причина (например, отдельно) для явного использования foreach самостоятельно? Вы можете создать вспомогательный помощник Custom Editor (или Display) для User class и сделать @Html.EditorFor(model=>model.Users). Razor будет использовать foreach для обработки каждого элемента с помощью специального помощника.

Просто идея для тех, кто посещает вопрос, действительно не знает, как справиться с этими случаями.