2013-02-19 47 views
0

您好我试图使用以下方法从我的数据库中创建一个列表,然后在我的视图中访问它们。这是我一直在努力...我怎么可以,但我的SelectListItem和DropDownList数据库值的列表?

var rTypeList = from r in db.Rubrics where r.DepartmentID == 2 select r; 
var selectedRubrics = typeList.Select(r => r.Category); 
IList <String> rubricsList = selectedRubrics.ToList(); 

IList<SelectListItem> iliSLI = new List<SelectListItem>(); 

SelectListItem selectedrubrics = new SelectListItem(); 
selectedrubrics.Text = "Choose An Option"; 
selectedrubrics.Value = "1"; 
selectedrubrics.Selected = true; 

iliSLI.Add(selectedrubrics); 

ViewData["Options"] = iliSLI; 

然后在我的观点,我有:@Html.DropDownList("Options")

这得到我的名单开始,但我怎么能得到的值从这个名单... IList <String> rubricsList = selectedRubrics.ToList(); ...,并将其添加到我的下拉列表?

+0

你已经拥有大部分作品了。哪一部分让你感到困惑?是渲染下拉还是获取控制器的值? – 2013-02-19 05:46:12

+0

我想将IList rubricsList = selectedRubrics.ToList()添加到我的IList iliSLI = new List ()集合中。 – CloudyKooper 2013-02-19 06:42:07

+0

你想连接列表? – 2013-02-19 06:45:39

回答

1

你几乎已经找出了问题的难点。

Here是一个解释......

在控制器端,你需要有SelectListItem类型的列表。我已经将这个列表传递给ViewBag.DropDownData,在这里你可以将它传递给你的模型,但我试图尽可能简单。所以你把这个列表传递给一个viewbag。

控制器代码

var myList = new List<SelectListItem> 
{ 
new SelectListItem {Text = "Yasser", Value = "YS"}, 
new SelectListItem {Text = "Vaibhav", Value = "VS"}, 
new SelectListItem {Text = "Ramanjit", Value = "RS"} 
}; 

ViewBag.DropDownData = myList; 
在使用@ Html.DropDownListFor()方法的视图

现在,第一参数应该是一个串/ INT(取决于你的值)模型中的声明这将稍后将数据发回给控制器时使用。第二个参数是我们刚刚准备的List,如果您使用的是模型,则只需在此处传递您的模型。

Razor视图

@Html.DropDownListFor(m => m.ValueSelected, ViewBag.DropDownData as List<SelectListItem>) 

还有就是这样。你的下拉是准备去:),这里是我的代码的输出中:

输出

enter image description here

希望这有助于。