In einer MVC-Anwendung übermittelt ein Formular, das eine Liste von Objekten enthält, die Liste nicht korrekt an den Controller. Nach dem Absenden des Formulars ist die Liste der vom Controller empfangenen Objekte leer.
Das Problem ist auf den fehlenden Index des Listenelements im Formularelement zurückzuführen. Der Modellordner benötigt Indizes, um Elemente in der Liste zu unterscheiden.
Um dieses Problem zu lösen, verwenden Sie Vorlagen anstelle von Teilansichten.
1. Editor-Vorlage erstellen
Erstellen Sie im Ordner „EditorTemplates“ unter dem Ansichtsordner eine Editorvorlage mit dem Namen „PlanCompareViewModel.cshtml“. Fügen Sie den folgenden Code in Ihre Vorlage ein:
<code>@model PlanCompareViewModel <div> @Html.HiddenFor(p => p.PlanID) @Html.HiddenFor(p => p.CurrentPlan) @Html.CheckBoxFor(p => p.ShouldCompare) </div></code>
2. Ändern Sie die übergeordnete Ansicht
Aktualisieren Sie die übergeordnete Ansicht wie folgt:
<code>@model IEnumerable<plancompareviewmodel> @using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" })) { <div> @Html.EditorForModel() </div> }</code>
DisplayTemplates und EditorTemplates übernehmen automatisch die Indizierung für Sammlungen und stellen so sicher, dass der Modellbinder die richtige Liste von Objekten erstellt.
Das obige ist der detaillierte Inhalt vonWarum kann mein MVC-Formular keine Objektliste veröffentlichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!