2010-06-01 52 views
5

正确的价值观,我有我RoomType类:将我的列表<Roomtype>转换为ASP的SelectList。 NET MVC DropDownFor <>,并得到每个选项项目

Int32 Id 
String Name 
String ColorCode 

我的视图模型得到应显示在下拉列表中List<Roomtype> RoomTypes

每个下拉选项都应该有:1)作为标题Name,2)作为值Id,以及3)风格背景颜色#ColorCode

我的问题是如何正确地将此列表转换为List<SelectListItem>,按照ASP.NET MVC的DropDownFor帮助程序的要求,然后为每个选项插入正确的值。我试图在我的viewmodel有一个新的只读属性,其中有一个getter RoomtypeSelectList,它返回new SelectList(RoomTypeList),但我不能得到正确的属性显示(名称,ID,背景色)。

我会很感激的方向是正确的一些帮助或指针...

回答

2

内置的HTML辅助方法不会让你产生样式或标题属性的选择列表项。

如果您想要添加这些属性,您需要创建自己的html助手方法,或者只需使用<% foreach ... %>手动输出选择列表。

9

在视图中尝试这样的事情

<%=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; 
+0

你宣布roomTypesSelect但似乎并没有用它做什么? – JsonStatham 2015-03-06 12:01:14

相关问题