否则我总是需要在执行任何其他验证之前检查值是否为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
});
答案 0 :(得分:3)
见here。它被称为CascadeMode,可以在这样的单个规则上设置:
RuleFor(x => x.Name)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty()
.Length(2, 32);
或者可以通过以下方式全局设置:
ValidatorOptions.CascadeMode = CascadeMode.StopOnFirstFailure;
注意:如果您全局设置它,可以在任何单个验证程序类或任何单个规则上使用CascadeMode.Continue
覆盖它。