Tob*_*ias 9 validation fluentvalidation
从FluentValidation 文档中我了解到我可以通过设置级联模式来中止验证.
RuleFor(x => x.Surname)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotNull()
.NotEqual("foo");
Run Code Online (Sandbox Code Playgroud)
这样,如果属性Surname为null,则不会执行相等性检查并阻止空指针异常.在文档中进一步说明,这不仅适用于规则,也适用于验证器级别.
public class PersonValidator : AbstractValidator<Person> {
public PersonValidator() {
// First set the cascade mode
CascadeMode = CascadeMode.StopOnFirstFailure;
// Rule definitions follow
RuleFor(...)
RuleFor(...)
}
}
Run Code Online (Sandbox Code Playgroud)
我将CascadeMode设置为不在规则定义内,而是设置为验证器的实例.预期的行为是,如果第一个RuleFor
失败,第二个RuleFor
将不会被评估,但事实并非如此.无论以前的验证错误如何,都会评估所有规则.
我使用它错了还是我误解了文档?
您可以通过设置在全局级别设置CascadeMode
ValidatorOptions.CascadeMode = CascadeMode.StopOnFirstFailure;
Run Code Online (Sandbox Code Playgroud)
或者在财产层面
RuleFor(x => x.PropertyName)
.Cascade(CascadeMode.StopOnFirstFailure)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3666 次 |
最近记录: |