型号:
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;
}
验证运行两次。我想这不是一个很好的做法。我做错了什么?
编辑:我应该提到验证程序在类库中。
我的坏。在到处查看后,我看到了Validator的所有实例。我删除了它,一切都得到了修复。谢谢你的帮助。