代码之家  ›  专栏  ›  技术社区  ›  Maslow

ASP.NET MVC复合DTO与强类型模型+弱类型视图数据传递的优缺点?

  •  1
  • Maslow  · 技术社区  · 15 年前

    我正在尝试找出在组成一个具有model+下拉列表的dto的每一个方面的问题,等等…在视图数据中传递这些额外的对象/列表。除了我的强类型纯粹主义者之外,我还没有提出反对使用viewdata的理由。

    我想我会问我还需要考虑什么?

    3 回复  |  直到 15 年前
        1
  •  0
  •   Robert Harvey    15 年前

    这是一个封装的问题。我将呈现视图所需的所有内容(包括下拉列表数据和服务器端验证)放入ViewModel对象中。这样我就不会有东西被风吹散了。

    我不是一个纯粹主义者,但是把非类型化的信息推到视图数据中,并将其转换为视图中的正确类型的想法让我感到不舒服。我还没有找到一个有意义的情况,除非我将少量信息传递给与ViewModel或底层数据库模型无关的视图。

    我将在viewdata中放入的一小部分信息可能包括分页链接或返回URL引用之类的内容,这些内容我不想作为参数放入URL,也不希望它们污染我的viewdata对象。

        2
  •  0
  •   Terje    15 年前

    出于测试目的,最好将大多数内容保存在自定义的视图模型中。您可以更容易地对数据运行适当的测试,即使不启动Web服务器,也可以赢得性能。

        3
  •  0
  •   G-Wiz RameshVel    15 年前

    Terje关于可测试性的观点很重要。性能点也很明显(没有字典查找或强制转换)。

    另一方面,每周输入的viewdata模仿Rails的世界。在少数情况下,您必须将项目从Rails转换为ASP.NET MVC 在非常有限的时间内 (实际上我也有过)这使得这个过程更加直接。对于弱类型的viewdata,这实际上是一个pro的核心:rapid-app-dev。

    在我被否决票击倒而被遗忘之前,我并不主张它是正确的或适当的。不可否认,使用显式视图模型需要更多的开发人员资源来开发。在开发人员资源中保存的内容在性能、可测试性和长期可维护性方面都会丢失。