Sul*_*man 3 c# model-validation asp.net-core-webapi asp.net-core-2.1
我知道针对其他框架和语言多次询问这个问题,但我想知道一旦模型验证在 ASP.NET Core 2.1 中出现第一个错误,我如何才能真正停止模型验证?
[Required(ErrorMessage = Email.requiredErrorMessage)]
[DataType(DataType.EmailAddress, ErrorMessage = Email.formatErrorMessage)]
[StringLength(Email.maximumLength, MinimumLength = Email.minimumLength, ErrorMessage = Email.rangeErrorMessage)]
[EmailExists(ErrorMessage = Email.doesNotExistsMessage)]
public string email { get; set; }
[Required(ErrorMessage = ConfirmationCode.requiredErrorMessage)]
[RegularExpression(ConfirmationCode.regularExpression, ErrorMessage = ConfirmationCode.formatErrorMessage)]
public string confirmationCode { get; set; }
Run Code Online (Sandbox Code Playgroud)
上面的代码是 API 模型验证,在发出补丁请求时,我收到以下响应:
"email":[
"This email does not exist in database"
],
"confirmationCode":[
"Confirmation code format is invalid"
]
}
Run Code Online (Sandbox Code Playgroud)
我不希望模型验证在确保数据库中不存在电子邮件时继续,只需返回该错误并且不再继续验证。
您可以配置注册 MVC 服务时 MVC 将处理的最大错误数:
services.AddMvc(options => options.MaxModelValidationErrors = 1);
Run Code Online (Sandbox Code Playgroud)
请参阅https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-2.1#model-state
MVC 将继续验证字段,直到达到最大错误数(默认为 200)。您可以通过将以下代码插入 Startup.cs 文件中的 ConfigureServices 方法来配置此数字:
话虽如此,您不一定能控制处理这些错误的顺序。要处理这个问题,您可能需要添加一些自定义验证逻辑,这也在上面的链接中进行了讨论。
| 归档时间: |
|
| 查看次数: |
910 次 |
| 最近记录: |