4

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

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

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

谢谢!

4

1 回答 1

6

域级别验证和视图模型验证是完全不同的恕我直言(尽管它们可能有很多重叠)。

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

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

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

于 2011-07-20T15:03:57.513 回答