我想在不使用 ViewBag 的情况下将一个 DropDownList 添加到我的视图中,其中包含几个静态选项,并且我希望它与模型绑定。我怎样才能做到这一点?
问问题
3682 次
1 回答
4
好吧,你从编写视图模型开始:
public class MyViewModel
{
public string SelectedValue { get; set; }
public IEnumerable<SelectListItem> Values { get; set; }
}
然后是一个控制器操作,它将填充此视图模型并将其传递给视图:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyViewModel();
// TODO: those values will probably be coming from a database or something
model.Values = new[]
{
new SelectListItem { Value = "1", Text = "item 1" },
new SelectListItem { Value = "2", Text = "item 2" },
new SelectListItem { Value = "3", Text = "item 3" },
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
string selectedValue = model.SelectedValue;
return Content("You selected: " + selectedValue);
}
}
最后是一个强类型视图,您可以在其中使用Html.DropDownListFor
帮助器:
@model MyViewModel
@using (Html.BeginForm())
{
@Html.DropDownListFor(x => x.SelectedValue, Model.Values)
<button type="submit">OK</button>
}
助手需要 2 个参数:第一个是视图模型上标量属性的 lambda 表达式,它将保存所选值,第二个只是一个IEnumerable<SelectListItem>
属性,它保存将显示在下拉列表中的所有可用值。
于 2013-08-23T16:07:51.970 回答