【问题标题】:Is it possible to stop checking further validations when the first one fails?当第一个验证失败时,是否可以停止检查进一步的验证?
【发布时间】:2014-07-22 23:43:04
【问题描述】:

否则我总是需要在执行任何其他验证之前检查该值是否为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
    });

【问题讨论】:

    标签: c# asp.net asp.net-mvc fluentvalidation fluentvalidation-2.0


    【解决方案1】:

    here。它被称为 CascadeMode,可以像这样在单个规则上设置:

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

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

    ValidatorOptions.CascadeMode = CascadeMode.StopOnFirstFailure;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多