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
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
):
Jetzt müssen Sie nur noch eine benutzerdefinierte Editorvorlage für den DropDownViewModel
-Typ ( ~/Views/Shared/EditorTemplates/DropDownViewModel.cshtml
) definieren:
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
:
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%Tags und Links asp.net-mvc