【发布时间】:2012-01-13 09:02:04
【问题描述】:
可能是一个愚蠢的问题。 但是使用 Display 属性在模型中指定标题是否违反了关注点分离原则?标题不应该属于视图吗?
如果不是,有人可以解释为什么它属于模型吗?
【问题讨论】:
标签: c# .net asp.net-mvc asp.net-mvc-3 model-view-controller
可能是一个愚蠢的问题。 但是使用 Display 属性在模型中指定标题是否违反了关注点分离原则?标题不应该属于视图吗?
如果不是,有人可以解释为什么它属于模型吗?
【问题讨论】:
标签: c# .net asp.net-mvc asp.net-mvc-3 model-view-controller
不,如果它是您的 ViewModel,它不会违反模式。
ViewModel 通常是一个简单的 POCO(普通旧 CLR 对象),它 不包含业务逻辑,大部分只有属性。
@Html.DisplayFor(x => x.MyProperty) 方法将查找 Display 属性
并使用该信息。所以正确的方法是在视图中使用属性而不是任何类型的硬编码文本。
希望这会有所帮助
【讨论】:
在将您的域模型从视图中分离出来和拥有一个贫血的域模型之间有一条很好的界限 (http://en.wikipedia.org/wiki/Anemic_domain_model)。我个人认为在某些地方公开你的领域模型作为视图模型的属性是可以的。
我个人对贫乏的领域模型的不满是它“促进事务脚本和类似用例之间的代码重复,减少代码重用。”
【讨论】:
MVC 框架允许您将DataAnnotations 放在模型中,但严格来说,DataAnnotations 应该放在 ViewModel 中,而不是映射到数据库的 Model 中。
【讨论】: