Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 模型层对MVC属性的依赖性_Asp.net Mvc_Nhibernate_Model_Data Annotations - Fatal编程技术网

Asp.net mvc 模型层对MVC属性的依赖性

Asp.net mvc 模型层对MVC属性的依赖性,asp.net-mvc,nhibernate,model,data-annotations,Asp.net Mvc,Nhibernate,Model,Data Annotations,我们有一个使用nHibernate的MVC3项目;有一个单独的模型项目,其中包含存储库和服务层使用的所有模型类。这些模型使用System.ComponentModel.DataAnnotations中的数据注释,如DisplayAttribute和RequiredAttribute System.Web.Mvc中还包含诸如RemoteAttribute之类的属性 这当然意味着模型项目现在依赖于特定的前端技术 假设解决方案可以有其他前端,处理此依赖关系链接的最佳方法是什么?RemoteAttrib

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

System.Web.Mvc中还包含诸如RemoteAttribute之类的属性

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


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

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


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

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

应用这些“视图特定的”属性仅在相应的ViewModel上,而不在模型本身上。四个当前视图模型包含模型类型的属性。在这种情况下,是否需要另一层视图模型?是否继承和覆盖原始模型的任何验证属性,例如远程和razor视图使用的另一个视图模型,其中包含视图所需的数据和新验证视图模型的属性?