Wie kann ich meine listenbasierte Editorvorlage für eine POST-Aktion korrekt binden?

8

Ich habe ein Modell, ApplicantBranchList , das als Eigenschaft in einem größeren Modell wie folgt verwendet wird:

%Vor%

ApplicantBranchList :

%Vor%

ApplicantBranchList hat eine eigene Editor-Vorlage und eine innere Editor-Vorlage für jedes Element in ApplicantBranchList :

Ansichten / Freigegeben / EditorTemplates / ApplicantBranchList.cshtml:

%Vor%

Ansichten / Freigegeben / EditorTemplates / ApplicantBranchItem.cshtml:

%Vor%

Dieser Editor rendert richtig in der Ansicht, aber in der Postaktion:

%Vor%

PreferedBranches.Items ist null .

Was mache ich falsch?

    
ProfK 24.01.2013, 09:41
quelle

2 Antworten

14

Das Problem besteht darin, dass ASP.NET nicht herausfinden kann, wie an Model.Items property gebunden wird.

Um es zu reparieren, ersetzen Sie:

%Vor%

mit diesem:

%Vor%

und statt:

%Vor%

verwende diesen:

%Vor%     
SHSE 24.01.2013, 11:26
quelle
10

Mit MVC- und Editor-Vorlagen müssen Sie nicht manuell durch eine Liste navigieren und @HTTLEditorFor aufrufen.

Tun Sie dies:

%Vor%

ist dasselbe wie:

%Vor%

MVC übernimmt die Iteration durch Ihre Artikel und generiert Ihre Editor-Vorlage einmal pro Artikel. Wie in den Kommentaren erwähnt, muss Ihre Vorlage genauso benannt sein wie Ihr Modell. Außerdem sollte Ihre Modelldefinition eine eindeutige Darstellung Ihres Modells sein, nicht des Typs IEnumerable. Schließlich, wie in den Kommentaren erwähnt, wenn Sie den Template-Namen Parameter in Ihrem Aufruf an @ Html.EditorFor () angeben, haben Sie nicht den Vorteil der automatischen Iteration über Ihre Sammlung. Sie müssen wie oben gezeigt manuell iterieren.

    
kennythecoder 18.12.2014 18:25
quelle