2013-02-19 49 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

希望這有助於。