首页 > 解决方案 > .NET Core 5 中的 MaxModelValidationErrors = 1

问题描述

我有一个实现IValidatableObject接口的对象,在“AddControllers”(Startup.cs)内部,我将MaxModelValidationErrors属性设置为1。问题是当我达到错误限制时,我无法得到我抛出的自定义错误,我只得到"The maximum number of allowed model errors has been reached". 我需要这个,因为我对数据库进行了验证,并且我不想进行不必要的查询。是否可以使用来解决这个问题ValidationResult ("MY_ERROR")?谢谢。

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext){

    ...
    yield return new ValidationResult("MY_ERROR");
    ...

}

在此处输入图像描述

没有MaxModelValidationErrors

在此处输入图像描述

标签: c#asp.net-core.net-coreasp.net-core-5.0

解决方案


您可以尝试将MaxModelValidationErrors属性设置为 2。

当它为1时,遇到一个错误就会停止,并将Exception添加The maximum number of allowed model errors has been reached到ModelState,它算作一个错误,无论错误来自built-in attributes,或custom attributes,或IValidatableObject。所以你不能得到你自己的错误信息。这是设计使然。


推荐阅读