[英]FluentValidation, Multiple conditions not working in one rule
These are my rules: 这些是我的规则:
public class CambiarPasswordViewModelValidator : AbstractValidator<CambiarPasswordViewModel>
{
public CambiarPasswordViewModelValidator(
IStringLocalizer<CambiarPasswordViewModelValidator> localizer,
IStringLocalizer<SharedLocalizer> sharedLocalizer)
{
RuleFor(c => c.ContraseñaActual)
.NotEmpty().WithMessage(sharedLocalizer["Requerido *"]);
RuleFor(c => c.ContraseñaNueva)
.NotEmpty().WithMessage(sharedLocalizer["Requerido *"])
.Equal(c => c.ContraseñaConfirmacion)
.When(c => !string.IsNullOrWhiteSpace(c.ContraseñaNueva))
.WithMessage(localizer["Nueva Contraseña y Confirmación no concuerdan"]);
RuleFor(c => c.ContraseñaConfirmacion)
.NotEmpty().WithMessage(sharedLocalizer["Requerido *"]);
}
}
My problem is second rule is not working as expected. 我的问题是第二条规则未按预期工作。 I need ContraseñaNueva validates when empty and also when value not equal to ContraseñaConfirmacion, however, only empty validation is injected to input in razor page. 我需要ContraseñaNueva验证是否为空,以及何时值不等于ContraseñaConfirmacion,但是,在剃刀页面中仅将空验证注入到输入中。 If I change the order, Equal validation works but NotEmpty doesn't. 如果我更改顺序,则等于验证有效,但非空无效。
it will be enough to separate the rules, 将规则分开就足够了,
RuleFor(c => c.ContraseñaNueva)
.NotEmpty().WithMessage(sharedLocalizer["Requerido *"]);
RuleFor(c => c.ContraseñaNueva)
.Equal(c => c.ContraseñaConfirmacion)
.When(c => !string.IsNullOrWhiteSpace(c.ContraseñaNueva))
.WithMessage(localizer["Nueva Contraseña y Confirmación no concuerdan"]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.