【问题标题】:Fluent Validation, Domain and ViewModels流利的验证、领域和视图模型
【发布时间】:2011-10-09 11:38:28
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 那么,我将为我的视图模型开发一些验证。 Fluent Validation 与 asp.net mvc 有很好的集成(它覆盖了数据注释)。有一些验证在数据库中产生了一些影响(使用我的存储库的自定义验证)。这些验证应该在域模型或视图模型上,还是两者兼而有之?如果两者都存在,我的验证将对数据库进行 2 次点击以进行相同的验证?干杯! (我也会使用 AutoMapper)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2012-08-07
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多