【问题标题】:How to stop validation after first error in ASP.NET Core 2.1如何在 ASP.NET Core 2.1 中出现第一个错误后停止验证
【发布时间】:2019-03-11 20:22:39
【问题描述】:

我知道对于其他框架和语言,这个问题被问了好几次,但我想知道,一旦模型验证在 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; }

以上代码是 API 模型验证,在发出 Patch 请求时,我收到以下响应:

"email":[
"This email does not exist in database"
],
"confirmationCode":[
"Confirmation code format is invalid"
]
}

当模型验证确保数据库中不存在电子邮件时,我不希望继续进行模型验证,只需返回该错误并且不再继续验证。

【问题讨论】:

    标签: c# asp.net-core-webapi asp.net-core-2.1 model-validation


    【解决方案1】:

    您可以配置注册 MVC 服务时 MVC 将处理的最大错误数:

    services.AddMvc(options => options.MaxModelValidationErrors = 1);
    

    https://docs.microsoft.com/en-us/aspnet/core/mvc/models/validation?view=aspnetcore-2.1#model-state

    MVC 将继续验证字段,直到达到最大错误数(默认为 200)。您可以通过在 Startup.cs 文件的 ConfigureServices 方法中插入以下代码来配置此编号:

    话虽如此,您不一定可以控制处理这些错误的顺序。要处理这个问题,您可能需要添加一些自定义验证逻辑,上面链接中也讨论了这些逻辑。

    【讨论】:

      猜你喜欢
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 2023-02-24
      • 2016-07-12
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      相关资源
      最近更新 更多