目前我有一个Teststep.cs业务对象和一个绑定到system.web.MVC命名空间的视图模型挂件,并具有IsDirty等附加属性。
在表示层中,我有两个视图(Template(写/读+更多函数)和Testplan(几乎只读)),它们显示了TeststepViewModel的不同属性。
我应该创建一个TeststepViewModelBase并创建另外两个ViewModelTemplateTeststepVM和TestplanTeststepVM吗?
这有什么好处?
否,ViewModels和Views之间不需要1-1映射。在两个视图之间共享一个ViewModel是非常明智的,只要它有意义。
ViewModel是视图所使用的模型的一个版本。如果您当前拥有的ViewModel表示一个逻辑组件,那么在两个视图之间共享它是有意义的。如果视图在同一业务对象上提供了不同的视角,那么您可能走上了正确的道路。
然而,这并不意味着您应该在默认的情况下为多个视图使用单个ViewModel。我用一个巨大的ViewModel做过项目,它有1000多行,位于十几个视图后面。这不是一个好的模式,很难维持。