【问题标题】:When to use ViewModel and when not in Asp.net MVC何时使用 ViewModel 何时不在 Asp.net MVC 中
【发布时间】:2011-11-07 11:25:42
【问题描述】:

AFAIK,有两种方法可以将数据从控制器传递到视图:一种是松散类型(使用 ViewBag 或 ViewData),另一种是强类型。由于强大的编译时检查,大多数人推荐后者。

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

最近遇到这样的问题;我需要传递一个类别模型,其中包含子类别和产品列表作为属性注册。然后在视图中,我需要显示子类别,并确保如果产品集合超过 10 个则分页发生。因此,我不能对类别模型或产品模型使用强类型视图。

解决方案由关注同行tvanfossonUfuk Hacıoğulları(非常感谢两者)在Post 中提出。那就是使用 ViewModel。我仍在努力理解和努力,这似乎是正确的解决方案。

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

【问题讨论】:

    标签: asp.net-mvc-3 viewmodel


    【解决方案1】:

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

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

    使用 Viewbag 的优点是您没有创建单独类的开销。 缺点是您没有可用的编译时类型检查和智能感知。

    【讨论】:

    • 真的很棒的答案伙伴。你似乎使用了 0% 不相关的词。谢谢!!
    猜你喜欢
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多