模型中的Display属性是否违反视图和模型中的关注点分离

时间:2011-12-05 16:25:57

标签: c# .net asp.net-mvc asp.net-mvc-3 model-view-controller

可能是一个愚蠢的问题。 但是没有使用Display属性指定模型中的标题违反了关注点分离原则吗?标题不应该属于视图吗?

如果没有,有人可以解释为什么它属于模型吗?

3 个答案:

答案 0 :(得分:5)

MVC框架允许您将DataAnnotations放在模型中,但严格说话DataAnnotations应该放在ViewModel中,而不是放在映射到数据库的模型中。

答案 1 :(得分:2)

不,如果是 ViewModel ,则不会违反该模式。

  

ViewModel通常是一个简单的POCO(普通旧CLR对象)   不包含业务逻辑,主要是属性。

@Html.DisplayFor(x => x.MyProperty)方法将查找Display属性 并使用该信息。因此,正确的方法是在视图中使用属性而不是任何类型的硬编码文本。

希望这会有所帮助

答案 2 :(得分:0)

将您的域模型与视图隔离并使用贫血域模型(http://en.wikipedia.org/wiki/Anemic_domain_model)之间存在一条界线。我个人认为可以在某些地方公开您的域模型作为视图模型的属性。

我对贫困域模型的个人感觉就是它“促进事务脚本和类似用例之间的代码重复,减少代码重用。”