【问题标题】:Does the Display attribute in the model violate separation of concerns from view and model模型中的 Display 属性是否违反了关注点与视图和模型的分离
【发布时间】:2012-01-13 09:02:04
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    不,如果它是您的 ViewModel,它不会违反模式。

    ViewModel 通常是一个简单的 POCO(普通旧 CLR 对象),它 不包含业务逻辑,大部分只有属性。

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

    希望这会有所帮助

    【讨论】:

    • 解释一下就好了。
    【解决方案2】:

    在将您的域模型从视图中分离出来和拥有一个贫血的域模型之间有一条很好的界限 (http://en.wikipedia.org/wiki/Anemic_domain_model)。我个人认为在某些地方公开你的领域模型作为视图模型的属性是可以的。

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

    【讨论】:

    • 同意,我大部分时间都这样做。
    【解决方案3】:

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

    【讨论】:

    • +1 - DataAnnotations 应该放置的确切位置(viewModel)
    猜你喜欢
    • 2010-12-09
    • 2012-10-15
    • 2011-10-29
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 2012-07-11
    • 2016-12-18
    • 2011-06-03
    相关资源
    最近更新 更多