是否有可能在第一个验证失败时停止检查进一步的验证?



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

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

例子
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
    });

见这里。它被称为CascadeMode,可以像这样在单独的规则上设置:

RuleFor(x => x.Name)
    .Cascade(CascadeMode.StopOnFirstFailure)
    .NotEmpty()
    .Length(2, 32);

也可以全局设置:

ValidatorOptions.CascadeMode = CascadeMode.StopOnFirstFailure;

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

相关内容

  • 没有找到相关文章

最新更新