2014-10-09 103 views
0

我想將選定的下拉選項發送到model.Feit 假設,我需要DropDownListFor,然後選擇表,然後下拉..?C#MVC ASP.NET DropDownListFor

//here's my drop down menu in my controller 
List<SelectListItem> items = new List<SelectListItem>(); 
items.Add(new SelectListItem { Text = "Owner", Value = "0", Selected = true }); 
items.Add(new SelectListItem { Text = "Leader", Value = "1" }); 
ViewBag.items = items; 
//this works fine, but the selected option has to be inserted into my database when submitted 




//the first line shows the label 
<div class="editor-label">@Html.LabelFor(model => model.Feit)</div> 
//the second line needs to show as a dropdownlist with the 2 options above here 
<div class="editor-field">@Html.DropDownListFor(model => model.Feit, "items")</div> 
//when the option is selected, and submit is pressed this has to be sent to the db 
// this works for all other fields, but my syntax is wrong at , "items" 
+0

請更詳細地解釋你正在做什麼以及問題是什麼。 – 2014-10-09 14:21:29

+0

頂部有一個下拉列表(在控制器中) 在底部(在我的create.cshtml頁面中),需要有一個下拉菜單和這些選項。這些,選中時必須放入model => model.Feit。 但是我認爲我的語法不正確,最後一行 – SNT 2014-10-09 14:27:33

回答

0

既然你已經在你的viewbag填充的IEnumerable<SelectListItem>,你只需要訪問它,將它轉換,以確保正確的DropDownListFor過載使用:

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

model.Feit應該是int類型或可以容納所選項目的值的東西。

+0

對,現在下拉式工作..沒有測試它是否真的把它發送到數據庫,但我認爲它會。 非常感謝亞倫! – SNT 2014-10-09 15:01:16

+0

Errormessage:「具有'Feit'鍵的ViewData項目類型爲'System.Int32',但必須是'IEnumerable '類型'。 我也試過字符串,不起作用。任何其他建議? – SNT 2014-10-10 08:45:00

+0

@ user3712713顯示包含「Feit」聲明的ViewModel,以及您的'DropDownListFor'聲明的外觀。 – AaronLS 2014-10-10 14:15:27

0

使用此

@Html.DropDownListFor(m => m.Feit, new SelectList(ViewBag.items, "Id","Name"),"Select") 
+0

「」不包含名稱爲「Id」「」的屬性。 「id」在你的例子中指的是什麼,是下拉菜單中的第一個選項? – SNT 2014-10-09 14:36:11

+0

它們只是選項標籤?您是否使用過上述代碼?是不是有效? – 2014-10-09 14:43:05

+0

這些不只是標籤,而是那些實際上屬性的名稱。當你指定'「Id」'時,它期望'View.items'中的每個項目都包含'.Id'屬性。 – AaronLS 2014-10-09 14:50:03