我正在尝试找出构成具有模型+下拉列表的DTO等的每一方面的问题...在ViewData中传递那些额外的对象/列表。除了强烈打字的纯粹主义者之外,我还没有提出反对使用ViewData的论点。
我想我会问我还需要考虑什么?
答案 0 :(得分:0)
这是一个封装问题。我把我需要的所有东西都渲染到ViewModel对象中(包括下拉列表数据和服务器端验证)。这样我就没有东西散落到狂风中。
我不是纯粹主义者,但是将无类型信息推送到ViewData中并将其转换为视图中的正确类型的想法让我觉得不舒服。除非我将少量信息传递给与ViewModel或底层数据库模型无关的视图,否则我还没有找到合理的情况。
我将放在ViewData中的一小部分信息可能包括分页链接,或者可能包含我不希望将Url作为参数放入的ReturnUrl引用,我也不希望它们污染我的ViewData对象。
答案 1 :(得分:0)
出于测试目的,最好将大部分内容保存在自定义ViewModel中。您可以更轻松地对数据进行正确的测试,即使不启动Web服务器,也可以在性能上获胜。
答案 2 :(得分:0)
Terje关于可测试性的观点非常重要。性能点也很明显(没有字典查找或转换)。
另一方面,每周打字的ViewData模仿Rails世界。在极少数情况下,您必须在非常有限的时间内将项目从Rails转换为ASP.NET MVC (我实际拥有),这使得流程更直接。对于弱类型的ViewData,它真正切入了一个Pro的核心:快速app dev。
在我被遗忘之前被遗忘之前,我并不是在宣称它是正确的或正确的。毫无疑问,使用显式ViewModels需要更多的开发资源。在开发资源中保存的内容在性能,可测试性和长期可维护性方面都会丢失。