Heim >Backend-Entwicklung >C++ >Wie kann die Modellbindung mit Listen in ASP.NET MVC 4 effektiv gehandhabt werden?
Beim Versuch, eine IList von Elementen an eine Ansicht zu binden, können Probleme mit der HttpPost-Methode auftreten. Obwohl hilfreiche Ressourcen wie der Artikel von Phil Haack vorhanden sind, spiegeln sie möglicherweise nicht die potenziellen Aktualisierungen in MVC 4 wider. Um dieses Problem zu beheben, untersuchen wir eine detaillierte Lösung.
public class MyViewModel { public List<Person> Persons{get;set;} }
@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) }
[HttpPost]public ViewResult(MyViewModel vm) { ... }
Beachten Sie, dass nur Eigenschaften mit Eingabefeldern nach dem Postback Werte haben. Darüber hinaus erkennt die Modellbindung von MVC nur aufeinanderfolgende IDs. Betrachten Sie dieses Beispiel, in dem ein Element bedingt ausgeblendet ist:
@for( int i = 0; i < Model.Persons.Count(); ++i) { if(i != 4)//conditionally hide 5th item, { //but BUG occurs on postback, all items after 5th will not be bound to the the list @Html.HiddenFor(m => m.Persons[i].PersonId) @Html.EditorFor(m => m.Persons[i].FirstName) @Html.EditorFor(m => m.Persons[i].LastName) } }
In diesem Fall werden nur die ersten vier Elemente auf dem Postback gebunden. Um dies zu vermeiden, stellen Sie für alle Elemente in der IList fortlaufende IDs sicher.
Das obige ist der detaillierte Inhalt vonWie kann die Modellbindung mit Listen in ASP.NET MVC 4 effektiv gehandhabt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!