【问题标题】:Mapping Domain Model Validation Errors to ViewModel when using FluentValidation使用 FluentValidation 时将域模型验证错误映射到 ViewModel
【发布时间】:2011-10-28 14:11:37
【问题描述】:

我希望这里的人能给我一些关于如何正确执行此操作的想法。

目前我有一个用于渲染屏幕的 ViewModel。 View 模型实际上包含了几个领域模型的扁平化数据。我已经用属性修饰了 ViewModel 以进行基本验证,但真正的验证工作发生在服务层。当服务层出现验证错误时,就会出现此问题。属性名称(即 - UserName)与 ModelState 中的条目不匹配(即 - RegistrationViewModel.UserName)。

有没有人建议如何处理这个问题?

提前致谢!

史蒂文

【问题讨论】:

    标签: asp.net-mvc fluentvalidation


    【解决方案1】:

    也许不能回答你的问题,但我通常是这样处理的:

    在域模型中,我不使用任何验证框架,也不使用它来提供用户友好的错误消息。我总是确保模型处于有效状态。当设置无效值时(在属性设置器中),我抛出异常。我使用域对象的构造函数在实例化时始终使它们处于有效状态,方法是使用默认值和构造函数参数。真正简单但功能强大,因为您始终可以确保您的模型处于有效状态。您应该对您的域对象进行单元测试以绝对确定。这种方法也适用于 orm。

    所以我只在视图模型上使用流利的验证来提供用户友好的消息。

    【讨论】:

    • 这种方法的问题是我会被困在将我的业务验证逻辑(复杂规则与简单字段是必需的类型)带到 UI 中,这样我才能获得更好的消息。我不认为这是一个好方法。
    【解决方案2】:

    这不是最好的解决方案,但最后我依靠我的基本客户端验证来显示基本字段验证,任何超过此验证并在服务中验证的内容都会显示在验证摘要中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      相关资源
      最近更新 更多