2013-07-17 106 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)