Heim >Backend-Entwicklung >C++ >Wie kann die Modellbindung mit Listen in ASP.NET MVC 4 effektiv gehandhabt werden?

Wie kann die Modellbindung mit Listen in ASP.NET MVC 4 effektiv gehandhabt werden?

Susan Sarandon
Susan SarandonOriginal
2025-01-03 09:32:39719Durchsuche

How to Effectively Handle Model Binding with Lists in ASP.NET MVC 4?

Modellbindung an eine Liste in MVC 4

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.

ViewModel-Konfiguration

public class MyViewModel
{
   public List<Person> Persons{get;set;}
}

Implementierung anzeigen

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

Aktion Methode

[HttpPost]public ViewResult(MyViewModel vm)
{
...
}

Überlegungen

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn