У меня есть свой класс 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, Айдахо, Цвет фона).
Я ценил бы некоторую справку или указатели в правильном направлении...
Встроенные методы html-помощника не позволяют генерировать атрибуты стиля или заголовка для элементов списка выбора.
Если вы хотите добавить эти атрибуты, вам придется создать собственные вспомогательные методы html или просто вывести список select вручную с помощью <% foreach ... %>
.
В представлении попробуйте что-нибудь вроде этого
<%=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;