例如,FluentValidation验证用户输入的空电子邮件地址.
我链接了两个函数,但是它跳过了.NotEmpty().WithMessage()并跳到了下一个,即EmailAddress().WithMessage().
RuleFor(r => r.EmailAddress)
.NotEmpty().WithMessage("Email address is required.")
.EmailAddress().WithMessage("Email address is not valid.");
为什么错误消息是“电子邮件地址无效”.而第一个链接是“需要电子邮件地址”.
解决方法:
这是因为即使第一个规则失败,也始终会验证最后一个条件.尝试按照the documentation中的说明设置CascadeMode,如下所示:
RuleFor(r => r.EmailAddress)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithMessage("Email address is required.")
.EmailAddress().WithMessage("Email address is not valid.");