CascadeMode StopOnFirstFailure不起作用

时间:2018-04-03 14:47:14

标签: fluentvalidation

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。遗憾的是,验证程序中CascadeModeStopOnFirstFailure的设置无法正常工作。

1 个答案:

答案 0 :(得分:2)

如作者所述

  

这是正确的行为 - CascadeMode只影响验证器   在同一规则链中。对RuleFor的独立调用是独立的,   并且不依赖于其他规则的成功或失败。

请参阅this

所以它适用于这种情况

Rulefor(x => x.A)
.NotEmpty()
.Length(10);

=&GT;只有在Length不为空时才会应用A验证。

因此,您必须在When规则中使用MustAsync扩展名,检查AB是否为空(或if围绕这个规则)。