流畅的验证,域和ViewModels

时间:2011-07-20 14:54:30

标签: asp.net-mvc validation domain-driven-design viewmodel fluentvalidation

我一直在使用asp.net mvc,nhibernate和ddd概念开发一个Web应用程序。

我已经为我的域类开发了Fluent验证的验证,它运行正常。那么,现在,我需要一个ViewModel来编辑View中的实体,所以我的问题是,我是否需要创建另一个验证类来验证我的viewmodel?或者我应该怎么做以解决这种情况?

我问它是因为我不想破坏DRY(不要重复自己)concetp。

谢谢!

1 个答案:

答案 0 :(得分:6)

域级验证和View-Model验证完全不同(尽管它们可能有很多重叠)。

例如,在数据库中将某个字段设置为null可能是完全允许的,但需要在某些webforms上输入它。在这种情况下,您将在模型验证中检查null。

多个客户端应用程序共享相同的域控制器(例如通过WCF),但拥有不同的应用程序验证逻辑也是很正常的。

如果您在视图模型中使用DataAnnotations,您可以免费获得客户端javascript验证,因此作为一般规则,我总是从我的Domain对象中获得单独的ViewModel,即使它是1:1映射 - 我只是使用AutoMapper在它们之间进行转换。除了获得客户端验证之外,它还可以减少域验证中的混乱。