DropDownListFor перечисления в EF5
с использованием MVC4 Razor и Entityframework 5. У меня есть таблица, называемая организацией с целым полем TypeID, в котором я создал тип перечисления. В коде я могу установить и сравнить typeid с помощью перечисления.
public enum OrganisationType : int
{
Company = 1,
Department = 2,
Location = 4
}
Однако, когда я создаю файл create.cshtml либо с использованием стандартных шаблонов брандмауэра vs2012 mvc 4, либо через пакет nvet mvcscaffolding игнорируют поле TypeID. Я думал о внесении изменений в шаблоны tt, чтобы они были автогенерированы. Но изначально можно отобразить описательное имя перечисления в раскрывающемся списке для.
Ответы
Ответ 1
Это решение, его просто стыдно, что его не просто изменить шаблоны TT, чтобы автоматизировать это.
@Html.DropDownListFor(model => model.TypeID, new SelectList(Enum.GetValues(typeof(Models.OrganisationType))))
Отображает выпадающее меню с текстовыми значениями в нем, например, компанией, отделом, местоположением.
Ответ 2
В текущей версии MVC5, если вы создаете представление для модели с перечислением, она будет генерировать это:
@Html.EnumDropDownListFor(model => model.OrganisationType,
htmlAttributes: new { @class = "form-control" })
который делает то же самое, что и решение Tim, но с немного более сильным синтаксисом.