Wie zu verwenden MVC-Html-Helfer .DropDownListFor<> mit einem Enum
In meiner MVC 3 Razor app, ich habe ein Modell mit einem enum..
Modell Beispiel:
public class EmployeeModel
{
public enum Title
{
Accountant = 111,
Sales = 222,
Production = 333
}
[Required]
public string Name {get; set;}
[Required]
public Title JobTitle {get; set;}
}
In meiner Sicht ich möchte die Html-Helfer bauen ein Html-Formular...
Beispiel Anzeigen:
@model ..Models.EmployeeModel
@using (Html.BeginForm())
{
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name)
<br>
@Html.LabelFor(m => m.JobTitle)
@Html.DropDownListFor(m => m.JobTitle, ??How do I get Title enum values??)
<br>
<input type="submit />
}
Den Ausgang des DropDownListFor, dass ich versuchen, zu erreichen, würde wie folgt Aussehen:
Hinweis: die option Werte entsprechen den initialisierten Werten der enum -
<select name="JobTitle">
<option value="-1">Choose a Job Title</option>
<option value="111">Accountant</option>
<option value="222">Sales</option>
<option value="333">Production</option>
</select>
Wie bekomme ich die DropDownListFor<> helper erstellen Sie ein select/option-element basiert auf dem Titel enum des Modells?
Außerdem ist es möglich, die DropDownListFor<> Helfer, ein extra (das ist nicht Teil des enum) ähnlich wie in der "Wählen Sie eine Berufsbezeichnung ein" - option in dem Beispiel oben?
mögliche Duplikate von MVC3 Razor DropDownListFor Enumerationen
InformationsquelleAutor Jed | 2011-05-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie möglicherweise erhalten eine
String[]
mit den Namen der enum-Werte und erstellen Sie ein dropdown aus. In Ihrer view-Modell-fügen Sie eine EigenschaftTitles
TypSelectListItem
und fügen Sie den enum-Werte und-Namen an. Sie können die Namen und Werte durch dieSystem.Enum
geben.Es ist irgendwie hässlich, aber es funktioniert.
InformationsquelleAutor Tomas Aschan
Ich stolperte auf dieser StackO Frage/Antwort - nicht nur ist meine Frage hier ein exaktes Duplikat, aber die Antwort von Mike McLaughlin ist die beste Lösung, die ich erlebt habe, mit
DropdownListFor<>
mitEnums
. Speziell, Mike weist uns den Weg zu eine Lösung, die er gefunden, von Morgan LeroiMorgan ' s schnelle Lösung ist:
Aber, Morgan gemacht hat, eine Erweiterung, die die Umsetzung der
DropDownListFor<>
mit enums noch kompakter. Sie können download Morgan ' s Visual Studio-Lösung hier.Sagte, ich denke, sollten wir schließen diese Frage, da es eine exakte Kopie.
InformationsquelleAutor Jed
Hier ist die Lösung
Hinzufügen ViewBag Namen in DropDownList :
InformationsquelleAutor Ramya
Hier ist eine Möglichkeit, mit Html-Helfer:
Modell
Ansicht
HTML-Ausgabe
InformationsquelleAutor Jed
Einer gekapselten HTML-Helper Extension ist hier erhältlich :
http://www.spicelogic.com/Journal/ASP-NET-MVC-DropDownListFor-Html-Helper-Enum-5
den Quellcode-snapshot:
Herunterladen können Sie den vollständigen Quellcode des Projekts aus dem link.
InformationsquelleAutor Emran Hussain
Ich löste es mit dieser extension:
(Ich fand die Erweiterung auf SO, aber ohne default-Wert)
InformationsquelleAutor r03