Html.DropDownList填充

EP2*_*012 0 asp.net-mvc html-select asp.net-mvc-3

我的MVC项目有一个下拉列表.

@Html.DropDownList("Chart Type", new List<SelectListItem>
    {
        new SelectListItem{ Text="Horizontal", Value = "Horizontal" }, 
        new SelectListItem{ Text="Vertical", Value = "Vertical" },
        new SelectListItem{ Text="Pie", Value = "Pie" }
    }, 
    new { @class = "chzn-select", @multiple ="true", @style="width:350px;"} )
Run Code Online (Sandbox Code Playgroud)

这会将硬编码值放入列表中.如果我想从数据库中获取值,最好的方法是什么?

我可以Html.DropDownList使用sql查询或SP来填充列表吗?

For*_*Two 5

使用(至少)两个属性创建视图模型:

public class ViewModel()
{
   public List<SelectListItem> Items { get; set; }
   public string SelectedItem { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在控制器中,调用数据源并填充视图模型的Items属性并将其传递给视图.

public ActionResult Index()
{
   var viewModel = new ViewModel();
   viewModel.Items = database.GetChartTypes();//or however you're accessing your data
   return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)

然后强烈键入您的视图并使用DropDownListFor帮助器

@model MyProject.ViewModel
...
@Html.DropDownListFor(m => m.SelectedItem, 
                      Items,
                      "--Select a Chart Type--",
                      new { @class = "chzn-select", 
                            @multiple ="true", 
                            @style="width:350px;"
                          });
Run Code Online (Sandbox Code Playgroud)