【问题标题】:Using FluentValidation to validate on a collection of Fields (rather than on a validator model)使用 FluentValidation 验证字段集合(而不是验证器模型)
【发布时间】:2019-07-22 18:13:47
【问题描述】:

我正在尝试查看是否有在我的应用程序中无需为每个对象类型显式创建验证模型的情况下使用 FluentValidation 的方法。

这在技术上和目前是否可行?

更新

换个说法,FluentValidation 是否可以在没有 IValidator 上下文的情况下验证规则?相反,我想传入要验证的项目实例并使用即时构建的验证规则。

已解决

我能够通过一种 hack 解决方案来解决。这里是 我所做的基本细节:

1) 我创建了一个包含对象集合的类 (GenericModel) 表示模型中的属性。 2)我创建了一个验证器类 继承自 AbstractValidator。 3) 基于 GenericModel 的“属性对象”+ 附加元数据的集合 关于每个属性的验证规则和错误消息,我能够 在运行时添加 FluentValues 规则。 4)。在 EditForm 我 处理了 OnSubmit 事件。在那个事件处理程序中,我执行验证 通过 FluentValidation 的 ValidateAsync() 方法。 5)。最后,我迭代 通过验证结果并使用适当的更新每个字段 CSS、错误消息、突出显示...等。

【问题讨论】:

  • 这个链接有用吗? chrissainty.com/…
  • 这是我开始使用 FL 的文章。但它并没有解决验证 T 型模型的技术问题。
  • 我尝试通过第一篇文章(史蒂夫哈里斯发布的答案)。但我就是听不懂。
  • 请将您编辑的答案作为单独的答案发布并标记为解决方案

标签: validation asp.net-core fluentvalidation blazor fluentvalidation-2.0


【解决方案1】:

我能够通过一种 hack 解决方案来解决。以下是我所做的基本细节:

  1. 我创建了一个类 (GenericModel),它具有一组表示模型中属性的对象。

  2. 我创建了一个继承自 AbstractValidator 的验证器类。

  3. 基于 GenericModel 的“属性对象”集合 + 关于每个属性的验证规则和错误消息的附加元数据,我能够在运行时添加 FluentValues 规则。

  4. 在 EditForm 中,我处理了 OnSubmit 事件。在那个事件处理程序中,我通过 FluentValidation 的 ValidateAsync() 方法执行验证。

  5. 最后,我遍历验证结果并使用适当的 CSS、错误消息、突出显示...等更新每个字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多