![]() |
1
0
这是一个封装的问题。我将呈现视图所需的所有内容(包括下拉列表数据和服务器端验证)放入ViewModel对象中。这样我就不会有东西被风吹散了。 我不是一个纯粹主义者,但是把非类型化的信息推到视图数据中,并将其转换为视图中的正确类型的想法让我感到不舒服。我还没有找到一个有意义的情况,除非我将少量信息传递给与ViewModel或底层数据库模型无关的视图。 我将在viewdata中放入的一小部分信息可能包括分页链接或返回URL引用之类的内容,这些内容我不想作为参数放入URL,也不希望它们污染我的viewdata对象。 |
![]() |
2
0
出于测试目的,最好将大多数内容保存在自定义的视图模型中。您可以更容易地对数据运行适当的测试,即使不启动Web服务器,也可以赢得性能。 |
![]() |
3
0
Terje关于可测试性的观点很重要。性能点也很明显(没有字典查找或强制转换)。 另一方面,每周输入的viewdata模仿Rails的世界。在少数情况下,您必须将项目从Rails转换为ASP.NET MVC 在非常有限的时间内 (实际上我也有过)这使得这个过程更加直接。对于弱类型的viewdata,这实际上是一个pro的核心:rapid-app-dev。 在我被否决票击倒而被遗忘之前,我并不主张它是正确的或适当的。不可否认,使用显式视图模型需要更多的开发人员资源来开发。在开发人员资源中保存的内容在性能、可测试性和长期可维护性方面都会丢失。 |