Frage

Ich habe ein Modell:

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

Wie verwende ich die Html.EditorFor Methode innerhalb einer foreach?

@model MyListModel
<table>
  <tr>
    <th></th>
  </tr>
  @foreach (var item in Model.Users) {
     <tr>
       <td>
          @Html.EditorFor(item.Enabled)
       </td>
     </tr>
  }
</table>
War es hilfreich?

Lösung

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

Es ist schon viele Male, dass Posting ein solches Modell zurück zum Server darauf hingewiesen wird nicht funktionieren in mvc standardmäßig. Für richtig Bearbeitung mit EditorFor in einer Schleife - for sollte verwendet werden:

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

Andere Tipps

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

Plus einige versteckte Variablen für mindestens eine Eigenschaft des Nutzers erforderlich sind:

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

Nicht das, was Sie nennen würde, elegant, aber es funktioniert in Bezug auf Ihre Post Aktion zu binden.

Gibt es einen anderen Grund (zB abgesehen) für explizit die foreach selbst mit? Sie könnten einen benutzerdefinierten Editor (oder Display) Helfer für User class und Make @Html.EditorFor(model=>model.Users) machen. Razor die foreach verwendet intern für die Verarbeitung jedes Elements mit Ihrer Gewohnheit Helper.

Nur eine Idee für diejenigen, die Frage mit wirklich keine Ahnung, wie diese besuchen Fälle verwalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top