我一直在使用 asp.net mvc、nhibernate 和 ddd 概念开发 Web 应用程序。
我已经使用 Fluent Validation 为我的域类开发了验证,并且效果很好。好吧,现在,我需要一个 ViewModel 来编辑 View 中的实体,所以,我的问题是,我是否需要创建另一个验证类来验证我的 View 模型?或者我应该怎么做才能解决这种情况?
我问这个问题是因为我不想破坏 DRY(不要重复自己)的概念。
谢谢!
最佳答案
域级验证和 View 模型验证完全不同(尽管它们可能有很多重叠)。
例如,数据库中的某个字段可能完全可以为空,但需要在某些网络表单上输入它。在这种情况下,您将在模型验证中检查 null。
多个客户端应用程序共享相同的域 Controller (例如通过 WCF),但拥有不同的应用程序验证逻辑,这也是很正常的。
如果您在 View 模型中使用 DataAnnotations,您可以免费获得客户端 javascript 验证,因此作为一般规则,我总是有一个与我的 Domain 对象分开的 ViewModel,即使它是 1:1 映射 - 我只是使用 AutoMapper 在它们之间进行转换。除了获得客户端验证之外,它还减少了域验证中的困惑。
关于asp.net-mvc - 流畅的验证、域和 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6763902/