如何使用 .NET FluentValidation InlineValidator 创建规则集?

问题描述 投票:0回答:2

我正在创建一个

InlineValidator
(来自 FluentValidation nuget 包/库)。

var validator = new InlineValidator<Person>;
validator.RuleFor(x => x.Surname).NotNull();
validator.RuleSet("someRuleSet", () => {
    // ?????
            });

当我尝试调用其中的 RuleSet 方法时,它似乎无法编译。

如何针对

InlineValidator
创建规则集?

这是我正在尝试的示例规则集...

.RuleSet("someRuleSet", () =>
{
    RuleFor(x => x.Name).NotNull();
    RuleFor(x => x.Age).NotEqual(0);
}
c# .net action fluentvalidation
2个回答
3
投票

您无法将

RuleFor
作为全局方法访问,它位于
InlineValidator
上。以下是如何添加
RuleSet
然后对其进行验证的示例:

// Setup the inline validator and ruleset
var validator = new InlineValidator<Person>();

validator.RuleSet("test", () =>
{
    validator.RuleFor(x => x.Name).NotNull();
    validator.RuleFor(x => x.Age).NotEqual(0);
});

var person = new Person();

// Validate against the RuleSet specified above
var validationResult = validator.Validate(person, ruleSet: "test");    

Console.WriteLine(validationResult .IsValid); // Prints False

0
投票

对于使用 FluentValidation 10.0 或以上版本的用户,根据 10.0 升级指南,带有

Validation
类型参数的
ValidationAsync
/
ruleSet
扩展方法已被删除。
string

要进行的迁移是通过 
通过将规则集定义为第二个参数来提供

validator.Validate(instance, ruleSet: "someRuleSet"); // For multiple rule sets // validator.Validate(instance, ruleSet: "someRuleSet,AnotherRuleSet"); 实例

:
Action<ValidationStrategy<T>>

	
© www.soinside.com 2019 - 2024. All rights reserved.