【问题标题】:Is it bad practice to use a lot of viewmodels in asp.net mvc在 asp.net mvc 中使用大量视图模型是不好的做法吗
【发布时间】:2011-08-25 04:26:28
【问题描述】:

一直在做一个宠物项目,以更好地学习asp.net mvc。我的问题是关于 mvc 中的视图模型。我知道控制器应该处理视图和模型之间的交互。我觉得我必须不断创建视图模型类来组合来自模型的信息以传递给视图。

这是不好的做法吗?我应该在其他地方做更多的逻辑并减少视图模型吗?

目前,我几乎为我的每一个主要视图都有了一个视图模型。但我绝对不希望视图直接访问模型。

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    不,您的所有视图都应该是强类型的,因此最好为每个视图使用一个视图模型。 Here 是一篇关于视图模型的非常好的文章。

    【讨论】:

    • 很好的答案。那篇文章总结的很好。这基本上就是我目前正在做的事情。谢谢。
    【解决方案2】:

    您使用的视图模型越多越好。视图模型允许您创建一个对象,该对象可以包含模型中不同类型的数据。这些在创建模板时非常有用。此外,这在使用 JQuery 和 Ajax 时非常有用,因为它是一种将数据传递到控制器然后直接传递到 DOM 的好方法。在我看来,使用尽可能多的视图模型。

    您可能会考虑的另一件事是尝试更好地设计您的模型。我个人尝试像 sql 数据库一样构建我的模型并遵循规范化形式。除了已有的模型之外,您不必为每个视图创建新的视图模型。如果您需要将信息传递给不属于您正在使用的模型的视图,请使用 ViewData 或 ViewBag。这些作为对象传递,因此您必须将它们强制转换为适当的类。

    【讨论】:

      【解决方案3】:

      这没什么不好。您的视图模型越接近视图越好。

      Model 无法特别匹配 View,因此您使用 ViewModel 类。

      【讨论】:

        【解决方案4】:

        这里有很好的答案,这是我对为什么很多视图模型不是问题的看法。 您的 ViewModel 是一种将纯数据访问对象甚至域对象与表示层分离的好方法,并提供这些对象的简化版本供您的视图使用。

        你的观点应该是愚蠢的,就我个人而言,我试图实现的是将我的域模型按摩成一个 ViewModel 供我的观点使用。

        【讨论】:

          【解决方案5】:

          使用大量视图模型会在您的项目中造成混乱。最好在控制器中创建一个Tuple 然后传递它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-10-01
            • 1970-01-01
            • 1970-01-01
            • 2011-04-24
            • 1970-01-01
            • 1970-01-01
            • 2023-04-07
            • 2021-01-20
            相关资源
            最近更新 更多