1

我有一个类似的列表

  IEnumerable<SelectListItem> Users;

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

1-使用 ViewModel

Public class myViewModel
{
   IEnumerable<SelectListItem> UserList;
}

并像这样填写

viewmodel.UserList=GetUsers();

2-从 ViewBag 使用

ViewBag.UserList=GetUsers();

3-从 ViewData 使用

ViewData["Users"]=GetUsers();

我的方式和哪种方式更好之间有什么区别

4

2 回答 2

3

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

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

于 2013-05-22T08:08:24.530 回答
1

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

于 2013-05-22T10:23:14.310 回答