FluentValidation. Net Core Validator запускает дважды - PullRequest
0 голосов
/ 28 марта 2020

Модель:

public class UserModel
{
    public string Email { get; set; }
    public string Password { get; set; }
}

Валидатор:

public class UserModelValidator:AbstractValidator<UserModel>
{
    public UserModelValidator()
    {
        RuleFor(x => x.Email).NotEmpty();
        RuleFor(x => x.Password).NotEmpty();
        RuleFor(x => x.Email).EmailAddress();
    }
}

Запуск:

            services
            .AddMvc(x => x.EnableEndpointRouting = false)
            .AddFluentValidation(mvcConfiguration => mvcConfiguration.RegisterValidatorsFromAssemblyContaining<UserModelValidator>());

Контроллер:

    public async Task<IActionResult> SignUp([FromBody]UserModel signupModel)
    {
        Logger.LogInformation("On Signup");
        if (!ModelState.IsValid)
        {
            return BadRequest(GetModelStateMessage());
        }
        ...
    }

    private string GetModelStateMessage()
    {
        var message = string.Join(" | ", ModelState.Values
                .SelectMany(v => v.Errors)
                .Select(e => e.ErrorMessage));
        return message;
    }

Запуск проверки дважды. Я считаю, что это не очень практика. Что я делаю не так?

Редактировать: я должен упомянуть, что валидаторы находятся в библиотеке классов.

1 Ответ

0 голосов
/ 28 марта 2020

Мой плохой. Посмотрев везде, я увидел весь экземпляр Валидатора. Я удалил это, и все было исправлено. Спасибо за помощь.

...