FluentValidation, несколько условий не работают в одном правиле - PullRequest
0 голосов
/ 15 февраля 2019

Это мои правила:

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 *"]);
    }
}

Моя проблема в том, что второе правило не работает должным образом.Мне нужно, чтобы ContraseñaNueva проверяла, когда пусто, а также когда значение не равно ContraseñaConfirmacion, однако, только пустая проверка вводится для ввода на странице бритвы.Если я изменяю порядок, проверка на равенство работает, а NotEmpty - нет.

1 Ответ

0 голосов
/ 15 февраля 2019

будет достаточно разделить правила,

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"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...