Benutzerdefinierte Modellbindung für Listen in MVC 4
Das Binden einer Liste von Elementen (IList) an eine Ansicht in MVC war eine häufige Herausforderung für Entwickler. Während es ältere Lösungen gibt, führt MVC 4 Verbesserungen ein, die den Prozess vereinfachen.
Für Szenarien, in denen jedes Element in der Liste ein eigenes Formular für die Dateneingabe erfordert, sollten Sie Ihr ViewModel wie folgt strukturieren:
public class MyViewModel { public List<Person> Persons{get;set;} }
In der Ansicht, innerhalb der BeginForm:
@model MyViewModel @for( int i = 0; i < Model.Persons.Count(); ++i) { @Html.HiddenFor(m => m.Persons[i].PersonId) @Html.EditorFor(m => m.Persons[i].FirstName) @Html.EditorFor(m => m.Persons[i].LastName) }
Die HttpPost-Aktion würde die aktualisierte Ansicht erhalten Modell:
[HttpPost]public ViewResult(MyViewModel vm) { ... }
Beachten Sie, dass beim Postback nur Eigenschaften mit entsprechenden Eingaben im Formular Werte haben. Dies liegt daran, dass die Modellbindung von MVC nach aufeinanderfolgenden IDs sucht und die Bindung stoppt, sobald eine Lücke auftritt. Daher ist es wichtig sicherzustellen, dass alle Elemente in der Liste gültige IDs haben und keine Lücken im Formular vorhanden sind.
Das obige ist der detaillierte Inhalt vonWie kann ich Listen von Elementen effizient an Ansichten in MVC 4 binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!