ASP.NET MVC integrierte Unterstützung für DropDownList-Editor-Vorlage

8

Gibt es eine Möglichkeit zu sagen, dass meine Ansichtsmodell-Eigenschaft als DropDownList gerendert werden soll (damit ich DropDownList items angeben kann)?

Ich habe viele benutzerdefinierte Implementierungen gefunden, aber ich denke, es sollte eine eingebaute Möglichkeit geben, solch eine grundlegende Sache zu implementieren.

Aktualisieren. Ich rende mein Modell nach Html.EditorForModel method, ich möchte keine Methoden wie Html.DropDownListFor

verwenden     
SiberianGuy 16.07.2012, 04:43
quelle

2 Antworten

14

Es gibt keine integrierte Vorlage, die eine Dropdown-Liste darstellt, außer für den Nullable<bool> -Typ, der ein Not Set , Yes , No -Dropdown darstellt, aber ich nehme an, dass Sie nicht danach fragen.

Also lasst uns eins bauen. Wie immer beginnen wir damit, das View-Modell zu definieren, das eine Dropdown-Liste mit 2 Eigenschaften darstellt (eine für den ausgewählten Wert und eine für die verfügbaren Werte):

%Vor%

Dann könnten wir ein Standard-View-Modell mit dieser Eigenschaft haben:

%Vor%

dann ein Controller, der das View-Modell füllen wird:

%Vor%

und eine entsprechende Ansicht ( ~/Views/Home/Index.cshtml ):

%Vor%

Jetzt müssen Sie nur noch eine benutzerdefinierte Editorvorlage für den DropDownViewModel -Typ ( ~/Views/Shared/EditorTemplates/DropDownViewModel.cshtml ) definieren:

%Vor%

und überschreiben Sie die Standardvorlage für den Objekttyp, um Deep Dive zu erlauben, wie Brad Wilson in his blog post . Andernfalls wird ASP.NET MVC standardmäßig nicht in komplexe Subtypen für Ihre Vorlagen rekurrieren. Also überschreiben wir ~/Views/Shared/EditorTemplates/Object.cshtml :

%Vor%     
Darin Dimitrov 16.07.2012, 06:25
quelle
1

Sie könnten Html Helper DropDownList verwenden, um Ihre Dropdown-Liste zu erstellen, aber das Modellobjekt sollte von SelectionListItem nicht zu unterscheiden sein.

%Vor%

Wenn Sie Ihr Model-Objekt nicht als SelectListItem erstellen möchten, sollten Sie DropDownListFor

verwenden %Vor%     
Anand 16.07.2012 05:05
quelle

Tags und Links