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