8

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

4

1 回答 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.DropDownItemsof 的实例MyCustomClass

于 2013-04-20T10:55:58.877 回答