Модель:
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;
}
Запуск проверки дважды. Я считаю, что это не очень практика. Что я делаю не так?
Редактировать: я должен упомянуть, что валидаторы находятся в библиотеке классов.