在MVC 4中创建下拉列表的最佳方法是什么?

Elv*_*dov 8 viewdata html-select html.dropdownlistfor viewbag asp.net-mvc-4

我想知道,在MVC 4中创建下拉列表的最佳方法是什么?使用ViewBag或其他方法?

Ant*_*t P 10

我认为,因为项目是视图中的变量值,它们属于视图模型.视图模型并不一定只是为了回来的物品出来查看的.

模型:

public class SomethingModel
{
    public IEnumerable<SelectListItem> DropDownItems { get; set; }
    public String MySelection { get; set; }

    public SomethingModel()
    {
        DropDownItems = new List<SelectListItem>();
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

public ActionResult DoSomething()
{
    var model = new SomethingModel();        
    model.DropDownItems.Add(new SelectListItem { Text = "MyText", Value = "1" });
    return View(model)
}
Run Code Online (Sandbox Code Playgroud)

视图:

@Html.DropDownListFor(m => m.MySelection, Model.DropDownItems)
Run Code Online (Sandbox Code Playgroud)

在控制器中或在适合该场景的任何其他位置填充此内容.

另外,有更多的灵活性,交换机public IEnumerable<SelectListItem>public IEnumerable<MyCustomClass>,然后做:

@Html.DropDownFor(m => m.MySelection,
    new SelectList(Model.DropDownItems, "KeyProperty", "ValueProperty")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您当然还必须修改控制器操作以填充model.DropDownItems实例MyCustomClass.