【发布时间】:2011-05-24 11:46:08
【问题描述】:
我的控制器上有一个创建和一个编辑操作。
我为每个动作都有一个视图模型。两个视图模型都有大约 15 个属性。两种型号共有 10 个,其余的则不同。
我的问题:我应该创建一些具有公共属性的基本模型(保持 DRY)还是不应该在这里关心?
【问题讨论】:
标签: asp.net-mvc
我的控制器上有一个创建和一个编辑操作。
我为每个动作都有一个视图模型。两个视图模型都有大约 15 个属性。两种型号共有 10 个,其余的则不同。
我的问题:我应该创建一些具有公共属性的基本模型(保持 DRY)还是不应该在这里关心?
【问题讨论】:
标签: asp.net-mvc
这几乎肯定会归结为您所处的实际情况。要问自己的最重要的问题是:这些共享属性是否形成某种基本实体?如果答案是肯定的,那么拥有基类可能是安全的。如果没有,我会远离它,只是将属性放在各个模型上。
如果您在创建视图模型中遗漏了一些在编辑视图中可编辑的属性,则共享属性可能不构成某种类型的基类,您应该避免使用基本视图模型方法。如果额外的属性只是辅助属性,比如选择列表,那么您可以安全地拥有一个具有通用属性的基本模型。
【讨论】:
您绝对应该关心。写出好的、干净的代码对灵魂有好处,而且我们都知道,每次你写出糟糕的代码,上帝都会杀死一只小猫。 :( 我们不希望这样。
将公共代码/属性移动到一个基类,然后有两个后代,它很好,干净并且使维护更容易。
【讨论】:
我个人会选择基类选项,这样您就必须在多个地方重复数据注释属性。
【讨论】:
MetadataType 属性来重用数据注释。
我的观点是,如果我正在创建或编辑某些东西,它们本质上是一样的。核心数据结构确实应该没有任何区别。
但假设存在差异,我会像在其他任何地方一样使用基类来共享公共属性。
【讨论】: