我一直在使用asp.net mvc,nhibernate和ddd概念开发一个Web应用程序。
我已经为我的域类开发了Fluent验证的验证,它运行正常。那么,现在,我需要一个ViewModel来编辑View中的实体,所以我的问题是,我是否需要创建另一个验证类来验证我的viewmodel?或者我应该怎么做以解决这种情况?
我问它是因为我不想破坏DRY(不要重复自己)concetp。
谢谢!
答案 0 :(得分:6)
域级验证和View-Model验证完全不同(尽管它们可能有很多重叠)。
例如,在数据库中将某个字段设置为null可能是完全允许的,但需要在某些webforms上输入它。在这种情况下,您将在模型验证中检查null。
多个客户端应用程序共享相同的域控制器(例如通过WCF),但拥有不同的应用程序验证逻辑也是很正常的。
如果您在视图模型中使用DataAnnotations,您可以免费获得客户端javascript验证,因此作为一般规则,我总是从我的Domain对象中获得单独的ViewModel,即使它是1:1映射 - 我只是使用AutoMapper在它们之间进行转换。除了获得客户端验证之外,它还可以减少域验证中的混乱。