Преобразуйте мой Список <Roomtype> в SelectList для ASP. СЕТЕВОЙ MVC DropDownFor <>, и получает правильные значения на объект опции

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

Int32 Id
String Name
String ColorCode

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

Каждый выпадает, объект опции должен иметь: 1) как заголовок Name, 2) как значение Id, и 3) цвет фона стиля #ColorCode.

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

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

Я ценил бы некоторую справку или указатели в правильном направлении...

5
задан Alex 1 June 2010 в 20:13
поделиться

2 ответа

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

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

2
ответ дан 13 December 2019 в 19:22
поделиться

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

 <%=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;
9
ответ дан 13 December 2019 в 19:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: