我有一个像
这样的清单 IEnumerable<SelectListItem> Users;
我可以通过3方式填充下拉列表中的用户项目
1 - 使用ViewModel
Public class myViewModel
{
IEnumerable<SelectListItem> UserList;
}
并填写
viewmodel.UserList=GetUsers();
2 - 使用ViewBag
ViewBag.UserList=GetUsers();
使用ViewData
ViewData["Users"]=GetUsers();
我的方式与哪种方式之间有什么区别
答案 0 :(得分:3)
还有第四种方式,我认为这是最好的方法。
由于您只有一个对象(类型为IEnumerable<SelectListItem>
),因此您可以将其作为模型传递给视图(不需要中间ViewModel)。
就可能性而言,没有真正的区别。区别在于您的第一个方法和我刚刚描述的方法是强类型的,这意味着您获得了Intellisense和编译时验证,而您的第二个和第三个方法是弱类型的,并且您没有智能感知和没有编译时验证。
答案 1 :(得分:1)
在您的情况下,最好使用ViewModel,因为它是干净的MVC,您可以获得强类型的好处。 ViewBag和ViewData更好,例如,如果视图中有很多部分视图,或者需要传递数据的布局困难。但据我所知,您只需显示下拉列表,因此请使用ViewModel。