【问题标题】:Create base class for 2 business objects / view models with mutual properties为具有相互属性的 2 个业务对象/视图模型创建基类
【发布时间】:2012-07-12 21:39:57
【问题描述】:

目前我有一个 Teststep.cs 业务对象和一个绑定到 system.web.MVC 命名空间并具有 IsDirty 等附加属性的视图模型挂件。

在表示层中,我有 2 个视图(模板(写入/读取 + 更多功能)和测试计划(几乎只读)),它们显示了 TeststepViewModel 的不同属性。

我应该创建一个 TeststepViewModelBase 并创建另外 2 个 ViewModels TemplateTeststepVM 和 TestplanTeststepVM 吗?

这样做有什么好处?

【问题讨论】:

  • 你的问题很模糊。你到底想完成什么?
  • 当我可以/应该实际使用基类时,我只想对视图模型/模型采用正确的架构方法。也许我完全错了?

标签: c# asp.net-mvc viewmodel base


【解决方案1】:

不,您不需要在 ViewModel 和 View 之间进行 1-1 映射。在两个 View 之间共享一个 ViewModel 是非常明智的,前提是它有意义。

ViewModel 是视图使用的模型的一个版本。如果您当前拥有的 ViewModel 代表一个逻辑组件,那么在两个 View 之间共享它是有意义的。如果视图为同一个业务对象提供了不同的视角,那么您可能走在正确的轨道上。

然而,这并不意味着您应该默认为多个视图使用单个 ViewModel。我曾使用一个巨大的 ViewModel(超过 1000 行)参与过项目,它位于十几个 View 后面。这不是一个好的模式,而且很难维护。

【讨论】:

  • 我有 2 个视图。两者都显示来自映射到 Teststep 类的 TeststepViewModel 类的数据。测试计划视图显示模板视图的部分其他属性。我现在应该将我的 TeststepViewModel 分成 2 个 ViewModel 吗?希望现在问题更清楚了。
  • @Pascal 这个问题对我来说从一开始就很清楚,我认为我不需要改变我的答案。我的回答你清楚吗?
  • 我理解您的回答不完整,因此我重新表述了我的问题/选择了其他词。我现在应该为自己的视图使用 2 个 TeststepViewModel。如果是的话,那与 1 TeststepViewModel 相比有什么优势。实际上,恕我直言,一个 Teststep.cs 和一个 TeststepViewModel 就足够了(当然我还有一个带有其他规则的 CreateTeststepViewModels 等......)
  • @Pascal “我现在应该为自己的视图使用 2 个 TeststepViewModel 吗?” - 不,您应该使用 1 个 ViewModel。
  • 2 个 ViewModel 的优点是它们更小更简单。就像 1 个大类或两个小类 - 如果它们执行相同的功能,则保留 1 个类。如果它们是单独的对象,则创建 2 个类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
相关资源
最近更新 更多