模型层依赖于MVC属性

时间:2012-11-03 22:31:04

标签: asp.net-mvc nhibernate model data-annotations

我们有一个使用nHibernate的MVC3项目;有一个单独的模型项目,其中包含存储库和服务层使用的所有模型类。这些模型使用System.ComponentModel.DataAnnotations中的DisplayAttribute和RequiredAttribute等数据注释。

还有一些属性,例如System.Web.Mvc中包含的RemoteAttribute。

这当然意味着模型项目现在依赖于特定的前端技术。

假设解决方案可能有其他前端,那么处理此依赖关系链接的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

RemoteAttribute不属于模型,因为它指定了一个控制器/动作来验证服务器上的属性,并且模型不应该知道控制器,动作或路由等概念。表示层取决于模型,而不是相反。

我会创建一个继承模型的视图模型,覆盖属性(必须是虚拟的)并添加RemoteAttribute。通过这种方式,您可以避免重复和映射,尽管这也是一种替代方案。

答案 1 :(得分:1)

为了减少数据库模型和前端技术之间的依赖关系,您可以使用特殊的视图模型来验证控制器中的其他前端操作,并将数据从viewmodel放到数据库实体之后。