我对MVC很陌生,目前我正在开发我的第一个应用程序,并试图了解它。有一段时间我试图找出在MVC中使用DropDownList的最佳方法。
我的意思是,是否可以修改模型或viewmodel属性,使得强类型化的视图传递给具有所需选项的DropDownList?
基本上我要问的是,用db中的数据填充MVC DropDownList并将其发送到视图的最佳方法是什么?
答案 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 );
}
<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的基础知识。用几句话说:
创建一个模型,将其传递给视图,然后让控制器根据从db传入的数据构建该模型。
在模型中创建2个属性,以便在下拉列表中使用它们(例如:int selectedItem
,SelectListItem items
)
一旦在您的视图中,请注意有2个版本的下拉列表帮助程序,强类型和非强类型,您应该始终使用强类型,它更好,更一致。