Binden Enum mit dropdown Menü und setzen Sie selected Wert auf action im MVC C#
Ich habe eine Enum
genannt CityType
public enum CityType
{
[Description("Select City")]
Select = 0,
[Description("A")]
NewDelhi = 1,
[Description("B")]
Mumbai = 2,
[Description("C")]
Bangalore = 3,
[Description("D")]
Buxar = 4,
[Description("E")]
Jabalpur = 5
}
Generieren Liste von Enum
IList<SelectListItem> list = Enum.GetValues(typeof(CityType)).Cast<CityType>().Select(x => new SelectListItem(){
Text = EnumHelper.GetDescription(x),
Value = ((int)x).ToString()
}).ToList();
int city=0;
if (userModel.HomeCity != null) city= (int)userModel.HomeCity;
ViewData["HomeCity"] = new SelectList(list, "Value", "Text", city);
Binden .cshtml
@Html.DropDownList("HomeCity",null,new { @style = "width:155px;", @class = "form-control" })
EnumHelper GetDescription Klasse, um eine Beschreibung des Enum -
Also, was ist dein problem? Und Ihre
Verwandte: stackoverflow.com/questions/17280906/...
enum
sollte nicht enthalten die Select = 0
Wert. Sie erstellen die null
option mit einer überlast von DropDownList()
akzeptiert eine labelOption
. Und um dies zu tun korrekt, beziehen sich die Antworten hereVerwandte: stackoverflow.com/questions/17280906/...
InformationsquelleAutor Satish Singh | 2013-08-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gebloggt über dieses Thema, wobei ich eine
EnumHelper
zu helfen, mit dieser gemeinsamen Aufgabe.http://jnye.co/Posts/4/creating-a-dropdown-list-from-an-enum-in-mvc-and-c%23
In Ihrem controller:
Aus Ihrer Sicht:
Der helper-Klasse:
InformationsquelleAutor NinjaNye
Dies ist der code, den ich verwenden für Enumerationen, die in den dropdowns.
Dann verwenden Sie einfach @Html.DropDown/Für(); und setzen diese Auswahlliste als param.
Auch erweitern zu können, DropDownFor wie diese:
Verwendung sieht dann wie folgt aus:
Es ist nur eine Klasse, wo diese ToSelectList () - Methode Leben. Auch wenn es wäre-Reiniger zu verwenden, die enumType param als
this
, so würden Sie dann verwenden Sie es wie:enumType.ToSelectList(metadata.Model.ToString())
ich ändern kann, die Antwort zu zeigen, diese Nutzung, wenn Sie wollen.Ja können Sie bitte aktualisieren, denn ich kann nicht scheinen, um es zu bekommen. Brauche ich zum erstellen einer ToSelectList, weil es nicht avialble? Danke!
Ok aktualisiert ToSelectList Liste und EnumDropdownListFor Methoden.
Vielen Dank für das Beispiel. Habe ich geändert enumType.ToSelectList(Metadaten.Modell.ToString ()), um Metadaten.ModelType.ToSelectList(Metadaten.Modell.ToString()). Aber ich hatte zu ändern, Methode Namen zu vermeiden ambigous-Methode aufrufen.
InformationsquelleAutor TheCodeDestroyer