哪种方式更适合填充MVC中的Dropdownlist?

时间:2013-05-22 07:49:46

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

我有一个像

这样的清单
  IEnumerable<SelectListItem> Users;

我可以通过3方式填充下拉列表中的用户项目

1 - 使用ViewModel

Public class myViewModel
{
   IEnumerable<SelectListItem> UserList;
}

并填写

viewmodel.UserList=GetUsers();

2 - 使用ViewBag

ViewBag.UserList=GetUsers();

使用ViewData

ViewData["Users"]=GetUsers();

我的方式与哪种方式之间有什么区别

2 个答案:

答案 0 :(得分:3)

还有第四种方式,我认为这是最好的方法。 由于您只有一个对象(类型为IEnumerable<SelectListItem>),因此您可以将其作为模型传递给视图(不需要中间ViewModel)。

就可能性而言,没有真正的区别。区别在于您的第一个方法和我刚刚描述的方法是强类型的,这意味着您获得了Intellisense和编译时验证,而您的第二个和第三个方法是弱类型的,并且您没有智能感知和没有编译时验证。

答案 1 :(得分:1)

在您的情况下,最好使用ViewModel,因为它是干净的MVC,您可以获得强类型的好处。 ViewBag和ViewData更好,例如,如果视图中有很多部分视图,或者需要传递数据的布局困难。但据我所知,您只需显示下拉列表,因此请使用ViewModel。