Asp.net mvc 3 何时使用ViewModel以及何时不在Asp.net MVC中

Asp.net mvc 3 何时使用ViewModel以及何时不在Asp.net MVC中,asp.net-mvc-3,viewmodel,Asp.net Mvc 3,Viewmodel,另外,有两种方法可以将数据从控制器传递到视图:一种是松散类型(使用ViewBag或ViewData),另一种是强类型。大多数人建议使用后者,因为它具有强大的编译时检查功能 在动态web应用程序中,当需要将多个实体从控制器传递到视图时,我们会遇到一些场景。在这种情况下,可以将单个实体作为模型传递,并将其放在ViewBag字典中。或者可以创建一个全新的ViewModel类,合并各种实体,然后将其传递给视图 最近,我遇到了这样一个问题;我需要传递一个类别模型,该模型将子类别和产品列表注册为属性。然后在

另外,有两种方法可以将数据从控制器传递到视图:一种是松散类型(使用ViewBag或ViewData),另一种是强类型。大多数人建议使用后者,因为它具有强大的编译时检查功能

在动态web应用程序中,当需要将多个实体从控制器传递到视图时,我们会遇到一些场景。在这种情况下,可以将单个实体作为模型传递,并将其放在ViewBag字典中。或者可以创建一个全新的ViewModel类,合并各种实体,然后将其传递给视图

最近,我遇到了这样一个问题;我需要传递一个类别模型,该模型将子类别和产品列表注册为属性。然后在视图中,我需要显示子类别,并确保在产品集合上进行分页,如果它们超过10个。因此,我不能对类别模型或产品模型使用强类型视图

该解决方案是由follow同行提出的,并且(非常感谢这两位同行)。这就是使用ViewModel。我仍在努力理解和研究它,这似乎是正确的解决方案


问题:这是处理此类情况的更好方法吗?此外,建议何时使用ViewModel,何时绕过ViewBag&a模型。

ViewModel类的唯一用途是包含(强类型)数据,以便通过操作方法发送到视图

因此,正如您提到的问题中的答案所建议的那样,创建一个Viewmodel类,该类包含视图中所需的所有数据的属性

使用Viewbag的优点是您不需要创建单独的类。
缺点是您没有编译时类型检查和intellisense可用。

非常好的答案。你似乎用了0%不相关的词。谢谢