Wie EditorFor innerhalb einer foreach verwenden
-
22-09-2019 - |
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>
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.