是否应该在每个使用MVC的视图中使用ViewModels ?
本文关键字:视图 ViewModels MVC 是否 | 更新日期: 2023-09-27 18:08:01
我理解您使用ViewModel来存储来自其他模型和要在视图中使用的源的不同数据,因为模型并不总是包含您想要的内容。
我想弄清楚,如果它是适当的使用一个ViewModel为每一个视图。我这么问的原因是为了保持一致性。你可以有一个视图只需要模型本身,而另一个视图必须有一个ViewModel。在所有视图中混合使用这些好吗?还是每个视图都应该有一个ViewModel?
这是很重要的,因为我的模型直接与数据库相关,因为我使用实体框架4.1代码优先。
这不是一个要求,但这是一个最佳实践。
您希望尽可能地将数据库与演示文稿解耦,并且拥有ViewModel
(即使它是相同的)可以实现这种分离。它还使事情保持一致,所以你不会有带模型的视图和没有模型的视图。这种类型的设计让你考虑所有你希望你的视图遵循的数据,并找出优化,看看是否可能发生重复的数据,保持数据考虑到一个位置,等等。
把你的ViewModel
想象成与View
....的合同这个View
需要X工作
前期多做一些工作,但最终会有回报的。
我个人喜欢将发送到我的视图的内容从我的模型中抽象出来。
原因是需求会变化,并且使用视图模型我可以快速地包含我需要的数据块,而不会污染我的模型。
当你的模型是由框架创建的时候,这就更重要了。如果将来与框架相关的模型发生变化,那么抽象出模型的细节可能真的很困难。
同样值得记住的是,视图是独立于控制器和模型的。你可能会发现,通过使用视图模型,你可以更容易地跨控制器方法重用视图,而不是将视图绑定到模型本身。