我可以使用ViewBag中的项目创建下拉列表,但似乎没有办法选择当前项目。我没有使用模型来实现这一点,只是想使用ViewBag,否则我必须创建另一个模型类来包装选择项和要显示的实际数据。
我的代码:
@Html.DropDownList("MyFilter", (IEnumerable<SelectListItem>)ViewBag.SelectItems, "Show All" )
没有参数可以设置选择列表的值。我忽略了什么吗? 如果我要使用DropDownListFor&lt;&gt;这只会对模型起作用吗?
答案 0 :(得分:2)
您可以尝试在MyFilter
中设置ViewBag/ViewData
媒体资源:
public ActionResult Index()
{
ViewBag.SelectItems = new[]
{
new SelectListItem { Value = "1", Text = "item 1" },
new SelectListItem { Value = "2", Text = "item 2" },
new SelectListItem { Value = "3", Text = "item 3" },
};
// preselect the second item
ViewBag.MyFilter = "2";
return View();
}
但我的建议是使用视图模型和帮助程序的强类型版本:
public ActionResult Index()
{
var model = new MyViewModel
{
SelectItems = new[]
{
new SelectListItem { Value = "1", Text = "item 1" },
new SelectListItem { Value = "2", Text = "item 2" },
new SelectListItem { Value = "3", Text = "item 3" },
},
// preselect the second item
MyFilter = "2"
};
return View(model);
}
并在您的强类型视图中:
@model MyViewModel
...
@Html.DropDownListFor(x => x.MyFilter, Model.SelectItems, "Show all")