public class Validator : AbstractValidator<Query>
{
public Validator()
{
CascadeMode = CascadeMode.StopOnFirstFailure;
RuleFor(x => x.A).NotEmpty();
RuleFor(x => x.B).NotEmpty();
RuleFor(x => x).MustAsync(...);
}
}
我想构建一个验证器,当不符合上述规则时,验证器不会调用MustAsync
。遗憾的是,验证程序中CascadeMode
到StopOnFirstFailure
的设置无法正常工作。
答案 0 :(得分:2)
如作者所述
这是正确的行为 - CascadeMode只影响验证器 在同一规则链中。对RuleFor的独立调用是独立的, 并且不依赖于其他规则的成功或失败。
请参阅this。
所以它适用于这种情况
Rulefor(x => x.A)
.NotEmpty()
.Length(10);
=&GT;只有在Length
不为空时才会应用A
验证。
因此,您必须在When
规则中使用MustAsync
扩展名,检查A
和B
是否为空(或if
围绕这个规则)。