2013-07-17 148 views
0

我有字符串的列表,我有這些字符串中的選定項目。
控制器:ASP.NET剃刀下拉選擇

ViewBag.GroupName = new SelectList(Names, Names.Find(s=>s==Place.GroupName)); 

查看:

@Html.DropDownListFor(model => model.GroupName, (IEnumerable<SelectListItem>)ViewBag.GroupName) 

但在視圖中的選擇始終是在未如預期列表中的第一項。 可能是什麼問題。

回答

0

嘗試鑄造列表如下:

@Html.DropDownListFor(model => model.GroupName, (IEnumerable<SelectList>)ViewBag.GroupName) 
0

您應該提供有關文本選擇列表的信息/價值爲好。我想這名字是一個字符串列表,所以你應該做這樣的事情:

Names創建SelectListItem列表:

ViewBag.GroupName = (from s in Names 
        select new SelectListItem 
        { 
         Selected = s == Place.GroupName, 
         Text = s, 
         Value = s 
        }).ToList(); 

然後在視圖中使用它:

@Html.DropDownList("GroupName") /*Will get from the ViewBag the list named GroupName*/ 
2

你需要確保您傳遞給Html.DropDownListFor的第一個參數設置爲當前應該選擇的SelectListItem的值。如果它的值與DropDownList中的任何值都不匹配,它將不會將任何項目設置爲選中狀態。

對於您的情況,您需要確保model.GroupName設置爲當前應該選擇的SelectListItem的值。

實施例:

的.cs:

class myViewModel 
{ 
    public string SelectedValue = "3"; 
    public List<SelectListItem> ListItems = new List<SelectListItem> 
     { 
      new SelectListItem { Text = "List Item 1", Value = "1"}, 
      new SelectListItem { Text = "List Item 2", Value = "2"}, 
      new SelectListItem { Text = "List Item 3", Value = "3"} 
     }; 
} 

.cshtml:

@model myViewModel 

@Html.DropDownListFor(m => m.SelectedValue, Model.ListItems)