Asp.net mvc 4 在MVC4中创建下拉列表的最佳方法是什么?

Asp.net mvc 4 在MVC4中创建下拉列表的最佳方法是什么?,asp.net-mvc-4,html.dropdownlistfor,html-select,viewdata,viewbag,Asp.net Mvc 4,Html.dropdownlistfor,Html Select,Viewdata,Viewbag,我想知道,在MVC4中创建下拉列表的最佳方法是什么? 使用查看包还是其他方法 我认为,由于项目是视图中的可变值,因此它们属于视图模型。视图模型不一定仅适用于从视图中返回的项目 型号: public class SomethingModel { public IEnumerable<SelectListItem> DropDownItems { get; set; } public String MySelection { get; set; } public

我想知道,在MVC4中创建下拉列表的最佳方法是什么?
使用查看包还是其他方法

我认为,由于项目是视图中的可变值,因此它们属于视图模型。视图模型不一定仅适用于从视图中返回的项目

型号:

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

    public SomethingModel()
    {
        DropDownItems = new List<SelectListItem>();
    }
}
视图:

在控制器中或适合场景的任何其他地方填充此内容

或者,为获得更大的灵活性,请将
public IEnumerable
切换为
public IEnumerable
,然后执行以下操作:

@Html.DropDownFor(m => m.MySelection,
    new SelectList(Model.DropDownItems, "KeyProperty", "ValueProperty")

在这种情况下,您当然还必须修改控制器操作以填充
模型。DropDownItems
使用
MyCustomClass
的实例。它不是视图。它是视图。我建议您将它们与
ViewModel
一起传递。嗯,我看到了许多DropDownList。我想用ViewBag创建它们,但不想太匆忙,也许还有其他比ViewBag更好的方法谢谢,@Ant P。在这个例子中,我如何获取dataValueField?我想编写这个新的SelectList(Model.DisplayList,“TestplanId”,“Name”)@ElvinArzumanoğlu我已经添加了一些关于如何实现这一点的信息。这是一个很好的例子,,我认为这种方法(最后一次编辑)适合我。只要第一个参数中的表达式匹配它应该填充的视图模型属性,并且您将此模型传递回您的控制器POST方法,它就应该可以工作。如果不是,这听起来像是一个独立问题的独特问题。
@Html.DropDownListFor(m => m.MySelection, Model.DropDownItems)
@Html.DropDownFor(m => m.MySelection,
    new SelectList(Model.DropDownItems, "KeyProperty", "ValueProperty")