Asp.net mvc 2 ASP.NET MVC 2数据验证:是否从DomainModel传递到ViewModel?

Asp.net mvc 2 ASP.NET MVC 2数据验证:是否从DomainModel传递到ViewModel?,asp.net-mvc-2,data-annotations,validation,Asp.net Mvc 2,Data Annotations,Validation,鉴于我对MVC和DDD的理解(必要时进行评论): 域模型可以由工厂创建,并由存储库保存。这些是POCO对象 视图模型包含视图所需的部分或完整域模型。它们由与存储库交互的服务生成。因此,域模型永远不会直接进入视图。同样,ViewModels永远不会持久化 同一个域模型很可能有多个视图模型,因为您可以在多个视图上显示它 也就是说,向域模型添加数据验证可以消除任何冗余 那么如何让ViewModels继承域模型数据验证? 我不希望简单地从视图模型中引用域模型就可以工作。去年10月在模式与实践峰会上,

鉴于我对MVC和DDD的理解(必要时进行评论):

  • 域模型可以由工厂创建,并由存储库保存。这些是POCO对象
  • 视图模型包含视图所需的部分或完整域模型。它们由与存储库交互的服务生成。因此,域模型永远不会直接进入视图。同样,ViewModels永远不会持久化
  • 同一个域模型很可能有多个视图模型,因为您可以在多个视图上显示它
也就是说,向域模型添加数据验证可以消除任何冗余

那么如何让ViewModels继承域模型数据验证?


我不希望简单地从视图模型中引用域模型就可以工作。

去年10月在模式与实践峰会上,我向他提出了同样的问题,但他没有一个全局解决方案

我和他讨论过的一个想法是扩展一个对象映射库,以便将验证从域模型映射到视图模型

在设计促进此场景的框架时,需要考虑以下事项:

  • 验证规则可能取决于上下文,因此对于特定视图模型可能是唯一的。企业库验证块允许使用配置文件设置验证逻辑-例如,可以扩展到传输到视图模型

  • 视图模型可能具有不属于域模型的属性,例如指定已选中某个“同意条款”复选框的属性。此属性需要验证,但它特定于视图和用例,而不是域模型。此场景作为另一个参数,至少部分地保持验证逻辑的分离

  • 为了维护和清晰起见,可能更容易复制域模型和视图模型的某些验证逻辑,而不是使用映射框架