使用 FluentValidation 验证字段集合(而不是验证器模型)

Using FluentValidation to validate on a collection of Fields (rather than on a validator model)

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

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

已更新

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

已解决

I was able to resolve by doing a kind of a hack solution. Here are basic details of what i did:

1) I created a class (GenericModel) which has a collection of objects representing properties in a model. 2) I created a validator class that inherits from AbstractValidator. 3) Based on GenericModel's collection of "property objects" + additional metadata about each property's validation rules and error messages, i was able to add FluentValues Rules, all at run-time. 4). At the EditForm i handled the OnSubmit event. In that event handler i execute validation via FluentValidation's ValidateAsync() method. 5). Finally, i iterate thru the validation results and update each field with appropriate CSS, error messages, highlighting...etc.

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

  1. 我创建了一个 class (GenericModel),它有一个表示模型属性的对象集合。

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

  3. 基于 GenericModel 的 "property objects" 集合 + 关于每个 属性 验证规则和错误消息的附加元数据,我能够添加 FluentValues 规则,全部在 运行-时间。

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

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