Конвертировать мой список <Roomtype>в SelectList для ASP. NET MVC DropDownFor <> и получите правильные значения для каждого элемента опции - PullRequest
5 голосов
/ 02 июня 2010

У меня есть класс RoomType:

Int32 Id
String Name
String ColorCode

Моя модель представления получает List<Roomtype> RoomTypes, который должен отображаться в раскрывающемся списке.

Каждый элемент раскрывающегося списка должен иметь: 1) в качестве заголовка Name, 2) в качестве значения Id и 3) стиль background-color # ColorCode.

Мои проблемы заключаются в том, как правильно преобразовать этот список в List<SelectListItem>, как того требует помощник ASP.NET MVC DropDownFor, и затем вставить правильные значения для каждого параметра.

Я попытался создать новое свойство readonly в моей модели представления, которое имеет метод получения RoomtypeSelectList, который возвращает new SelectList(RoomTypeList), но я не могу отобразить правильные свойства (имя, идентификатор, цвет фона).

Буду признателен за помощь или указатели в правильном направлении ...

Ответы [ 2 ]

9 голосов
/ 03 июня 2010

В представлении попробуйте что-то вроде этого

 <%=Html.DropDownList("userList", new SelectList((IEnumerable)ViewData["RoomTypes"], "Value", "Text",selectedValue)) %>

в вашем действии контроллера у вас будет

 List<SelectListItem> roomTypesSelect = new List<SelectListItem>();

    IList roomTypes = RoomTypeManager.GetAllRoomTypes();
    RoomTypes currentRoomType = RoomTypeManager.GetCurrentRoomType();
    bool isSelected = false;
    foreach (RoomTypes roomTypes in roomTypes)
    {
    if (currentRoomType.Id == roomTypes.Id)
       isSelected = true;
    else
        isSelected = false;

    roomTypes.Add(new SelectListItem { Text = roomTypes.Name + " " +roomTypes.ColourCode, Value = roomTypes.Id, Selected = isSelected });
    }

    ViewData["RoomTypes"] = roomTypes;
2 голосов
/ 02 июня 2010

Встроенные вспомогательные html-методы не позволяют генерировать атрибуты стиля или заголовка для элементов списка выбора.

Если вы хотите добавить эти атрибуты, вам нужно создать свои собственные вспомогательные методы html или просто вывести список выбора вручную, используя <% foreach ... %>.

...