asp.net-mvc - 流畅的验证、域和 View 模型

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

我一直在使用 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/

相关文章:

javascript - 以编程方式显示表单默认验证状态

c# - 我应该将使用 DDD 和 CQRS 方式刷新访问 token 的代码放在哪里?

.net - 构建您的域对象?

c# - asp.net mvc 遗留路由映射

c# - 默认情况下,ASP.NET MVC 5 不发送 X-Frame-Options header

javascript - 如何在 Sencha Touch 中向模型添加自定义验证规则

java - @Valid 注释在 spring boot 中不起作用

c# - 如何在 Controller 中使用 POST 参数重定向到外部 URL

c# - 如何初始化 private static readonly HashSet<char>?

domain-driven-design - DDD : Which layer to generate notification message in?