【发布时间】:2011-08-03 03:56:59
【问题描述】:
我有一个项目,其中 ViewModel 相互嵌套,因此它们本质上是域层次结构的字符串类型复制。例如,如果我们的域有以下关系:
组织有一对多的环境
环境有 1 到多个机器
然后会有一个包含一对多 EnvironmentViewModel 的 OrganizationViewModel,而 EnvironmentViewModel 本身将有一对多 MachineViewModel。然后在整个应用程序中重用这种层次结构风格,大约有五个这种类型的 ViewModel 之一。 (例如,EnvironmentViewModel 用于多个页面,MachineViewModel 也用于其中的许多页面,具体取决于所查看的层次结构的级别......为了讨论的目的,我已经对此进行了简化,但层次结构比上面的 3 大一点)。
现在,尽管我很想从上面下来谴责这种做法,但我一直无法找到有关这方面的太多信息。谁能告诉我有关既定做法的更多细节?轶事分享?
(我自己的偏见是这些 ViewModels 不应该以这种方式相互嵌套,并且 ViewModels 实际上应该对应于 Views,而不是域对象。我发现它与一些可维护性问题相当混乱。但我想知道其他人的想法或经历。)
【问题讨论】:
-
需要更多上下文。如果您正在执行表单数据(简单的 CRUD 应用程序),那么您所描述的可能就足够了。您是否在您的领域中进行任何实际过程,以至于领域模型实际上与视图不同?
-
嘿 Derick,这个项目的一些视图主要是一个域对象的表示,其中一个域对象可能具有用于链接到另一个区域的另一个域对象的一个或两个属性(例如,有一个 ManageEnvironment 视图具有链接将其连接到 ManageMachine,因此我们使用 EnvironmentViewModel.MachineViewModel.ID 来获取该 ID 以进行链接)。
标签: model-view-controller viewmodel