2012-02-02 43 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