DropDownListFor从哪里获取模型?

时间:2012-02-02 11:17:49

标签: asp.net-mvc-3 html.dropdownlistfor

您可以使用

创建下拉列表
@Html.DropDownListFor(model => model.SelectedId, model.DropDownItems);

但是DropDownListFor从哪里获取传递给model => model.SelectedId lambda的值?

1 个答案:

答案 0 :(得分:2)

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

使用

从控制器传入模型
return View(myModel);

模型可以在顶部的视图中定义

@model mymodelnamespace.RoomBookingInsert

因此,下拉框的值将设置为模型中的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})

上面的内容创建了一个标识为RoomNo

的输入表单

并使用SelectList,如果为null,则默认为空。定义所显示的值和文本的字段设置在选择列表参数的末尾。

最后一位将默认值设置为@ViewBag.RoomNo的内容。

您还可以在控制器中创建选择列表,然后只需将下拉选项设置为viewbag.myselectList实体。