Fluent验证.Net Core验证器触发两次



型号:

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的所有实例。我删除了它,一切都得到了修复。谢谢你的帮助。

最新更新