2013-05-22 97 views
1

我有这样哪种方式更好地填充MVC中的Dropdownlist?

IEnumerable<SelectListItem> Users; 

列表,我可以通过3方式填充在下拉列表中的用户资料

1 - 使用视图模型

Public class myViewModel 
{ 
    IEnumerable<SelectListItem> UserList; 
} 

,并填写它像

viewmodel.UserList=GetUsers(); 

2从ViewBag中使用

ViewBag.UserList=GetUsers(); 

3,从使用的ViewData

ViewData["Users"]=GetUsers(); 

什么是我的方式和其中一个区别是更好

+2

没有技术上的差异。只有使用差异。强类型用法(你的第一个考试)在编译时检查变量类型更好... –

回答

3

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

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

1

在你的情况,最好使用ViewModel,因为它是干净的MVC,你会得到强大的好处。 例如,如果视图中有很多局部视图,或者需要传递数据的困难布局,ViewBag和ViewData会更好。但据我了解,你只需要显示下拉列表,所以使用ViewModel。