我想知道,在MVC 4中创建下拉列表的最佳方法是什么?使用ViewBag还是其他方法?
我想知道,在MVC 4中创建下拉列表的最佳方法是什么?使用ViewBag还是其他方法?
我认为,既然这些项是你的视图中的可变值,它们就应该属于视图模型。视图模型不仅仅是用于从视图中返回的项目。
模型:
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")
在这种情况下,您当然还必须修改控制器操作以使用MyCustomClass
的实例填充model.DropDownItems
。