正确使用.NET MVC DropDownList的方法?

时间:2014-01-25 01:37:04

标签: c# asp.net-mvc-4

我对MVC很陌生,目前我正在开发我的第一个应用程序,并试图了解它。有一段时间我试图找出在MVC中使用DropDownList的最佳方法。

我的意思是,是否可以修改模型或viewmodel属性,使得强类型化的视图传递给具有所需选项的DropDownList?

基本上我要问的是,用db中的数据填充MVC DropDownList并将其发送到视图的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

MVC DropDownList<select>元素)中的列表项由ViewModel提供的任何IEnumerable<SelectListItem>提供,或者可选地通过ViewData提供,如下所示:

视图模型:

public class CustomerViewModel {
    public String Title { get; set; }
    public IEnumerable<String> ValidTitles { get; set; }
}

控制器操作:

[HttpGet]
public ActionResult AddCustomer() {
    CustomerViewModel vm = new CustomerViewModel();
    vm.Title = "Mr";
    vm.ValidTitles = new SelectListItem[] { new SelectListItem("Mr", "Mr"), new SelectListItem("Mrs.", "Mrs."), new SelectListItem("Sgt.", "Sgt.") };
    return View( vm );
}

查看文件(aspx语法):

<p>Title: <%= Html.DropDownListFor( vm => vm.Title, Model.ValidTitles ) %></p>

因此,如果您阅读并理解我的示例,您将看到应该在何处访问数据库。

请记住:ViewModel是传递给客户端的视图的整个变量数据状态的封装。

答案 1 :(得分:0)

Basically what I am asking, what is the best way to populate a mvc dropdownlist with data from a db and send it to the view?

实际上非常简单,您只需阅读如何在MVC中使用dropdowns的基础知识。用几句话说:

  1. 创建一个模型,将其传递给视图,然后让控制器根据从db传入的数据构建该模型。

  2. 在模型中创建2个属性,以便在下拉列表中使用它们(例如:int selectedItemSelectListItem items

  3. 一旦在您的视图中,请注意有2个版本的下拉列表帮助程序,强类型和非强类型,您应该始终使用强类型,它更好,更一致。