Подтвердить что ты не робот

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, чтобы они были автогенерированы. Но изначально можно отобразить описательное имя перечисления в раскрывающемся списке для.

4b9b3361

Ответ 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, но с немного более сильным синтаксисом.