2012-02-02 59 views
1

您可以使用DropDownListFor從何處獲取模型?

@Html.DropDownListFor(model => model.SelectedId, model.DropDownItems); 

一個下拉列表,但在哪裏呢DropDownListFor得到通入model => model.SelectedId拉姆達從價值?

回答

2

SelectedId只是模型中字段的整數。

該模型是從使用

return View(myModel); 

和模型可以在視圖頂部

@model mymodelnamespace.RoomBookingInsert 

所以dropdownbox的值被設定爲在SelectedId字段中定義的控制器通過在你的模型。

例如,適當的字段名稱應該是RoomNo,如果這樣可以更好地說明。

@Html.DropDownListFor(model => model.RoomNo, model.Rooms); 

只要model.DropDownItems(或在我的例子model.Rooms)包含與屬性值的項目,將它設置爲在列表中默認選定的項目。

編輯:

如果使用viewbag,而不是模型,而是使用DropDownList。 (每一個輸入有一個for擴展爲使用型號)

@Html.DropDownList("RoomNo", 
     new SelectList(ViewBag.Rooms as System.Collections.IEnumerable ?? Enumerable.Empty<SelectListItem>(), "RoomNo", "RoomName"), 
     new { @value = @ViewBag.RoomNo}) 

這上面,創建具有ID RoomNo輸入形式,

,並使用該SelectList將默認爲空,如果爲空。定義所顯示的值和文本的字段在選擇列表參數的末尾處設置。

最後一位將缺省值設置爲@ViewBag.RoomNo的內容。

您也可以在控制器中創建選擇列表,然後簡單地將下拉選項設置爲viewbag.myselectList實體。

+0

如果您要使用的'模型'不是'官方'模型,但是在ViewBag中傳遞了一些數據? – thecoop 2012-02-02 12:38:30

+0

使用DropdownList。生病更新我的答案。 – Doomsknight 2012-02-02 12:56:26