我想知道,在 MVC 4 中创建下拉列表的最佳方法是什么?使用ViewBag还是其他方法?
问问题
17253 次
1 回答
10
我会争辩说,由于这些项目是您视图中的变量值,因此它们属于视图模型。视图模型不一定只用于从视图返回的项目。
模型:
public class SomethingModel
{
public IEnumerable<SelectListItem> DropDownItems { get; set; }
public String MySelection { get; set; }
public SomethingModel()
{
DropDownItems = new List<SelectListItem>();
}
}
控制器:
public ActionResult DoSomething()
{
var model = new SomethingModel();
model.DropDownItems.Add(new SelectListItem { Text = "MyText", Value = "1" });
return View(model)
}
看法:
@Html.DropDownListFor(m => m.MySelection, Model.DropDownItems)
在控制器或适合该场景的其他任何地方填充它。
或者,为了获得更大的灵活性,请切换并执行以下操作public IEnumerable<SelectListItem>
:public IEnumerable<MyCustomClass>
@Html.DropDownFor(m => m.MySelection,
new SelectList(Model.DropDownItems, "KeyProperty", "ValueProperty")
在这种情况下,您当然还必须修改控制器操作以填充model.DropDownItems
of 的实例MyCustomClass
。
于 2013-04-20T10:55:58.877 回答