【问题标题】:Viewmodels and Models, howto split them upViewmodels 和 Models,如何拆分它们
【发布时间】:2010-06-01 14:06:41
【问题描述】:

我正在使用 asp.net mvc 2,但我不确定如何构建模型和视图模型。在 nerddinner 中,每个人只有 1 个。

每个实体 (?) 我应该只有 1 个视图模型,然后每个表单修改视图页都有 1 个模型吗?因此,该视图模型包含它所需要的所有内容,例如:PagedFoo FooClass ...、FooClass、Foowithbunnies、FooClassStats...?

/M

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    我的看法是(域)模型对象代表您的业务实体。任何业务需求要求的东西都在那里。

    视图模型可以使视图尽可能简单。所以所有的显示逻辑、数据按摩等都在那里。

    是的,有时一个会渗入另一个(嘿,你的视图模型/花生酱在我的域模型/巧克力中!),没关系。

    但您的目标应该是让它们尽可能分开和干净。这似乎导致了最可重用和易于维护的代码。

    【讨论】:

      【解决方案2】:

      我通常有一个代表视图的 ViewModel。这是为了使视图尽可能地愚蠢。 所以,就目前而言,这是一对一的关系。视图 -> 视图模型, 但是我的 ViewModel 和我的模型是一对多的关系

      提取 查看 |----|视图模型 视图模型 |----|

      【讨论】:

        【解决方案3】:

        我继承了一个应用程序,其中一个数据库表有大约 60 列。这表示在应用程序中的多个页面的过程中构建的持久类型。为了解决这个问题,我创建了大约 8 个不同的视图模型。

        所以... 以与 SQL 视图表相同的方式考虑 ViewModel(如果比喻有帮助的话)。 ViewModel 是一种机制,用于帮助将持久类型的使用限制为对您的视图有用的东西。

        此外,我强烈建议在处理 ViewModel 和持久类型之间的转换时使用 AutoMapper,它可以让处理 ViewModel 感觉更加自然。

        【讨论】:

          猜你喜欢
          • 2012-12-31
          • 2021-01-16
          • 1970-01-01
          • 2016-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-20
          • 1970-01-01
          相关资源
          最近更新 更多