当第一个失败时,是否可以停止检查进一步的验证?

Sta*_*tan 5 c# asp.net asp.net-mvc fluentvalidation fluentvalidation-2.0

否则,我总是需要null在执行任何其他验证之前检查该值是否存在.如果我有许多正在使用的自定义检查,这有点烦人Must().

我放在NotEmpty()它的最顶层因此它已经返回假,是否有可能停在那里?

RuleFor(x => x.Name)
    .NotEmpty() // Can we not even continue if this fails?
    .Length(2, 32)
    .Must(x =>
    {
        var reserved = new[] {"id", "email", "passwordhash", "passwordsalt", "description"};
        return !reserved.Contains(x.ToLowerInvariant()); // Exception, x is null
    });
Run Code Online (Sandbox Code Playgroud)

Nei*_*ith 3

这里。它称为 CascadeMode,可以在单个规则上设置,如下所示:

RuleFor(x => x.Name)
    .Cascade(CascadeMode.StopOnFirstFailure)
    .NotEmpty()
    .Length(2, 32);
Run Code Online (Sandbox Code Playgroud)

或者可以通过以下方式进行全局设置:

ValidatorOptions.CascadeMode = CascadeMode.StopOnFirstFailure;
Run Code Online (Sandbox Code Playgroud)

CascadeMode.Continue注意:如果您全局设置它,则可以在任何单独的验证器类或任何单独的规则上覆盖它。