Как остановить проверку после первой ошибки в ASP.NET Core 2.1 - PullRequest
0 голосов
/ 06 октября 2018

Я знаю, что этот вопрос задают несколько раз для других фреймворков и языков, но я хотел знать, как я могу действительно остановить проверку модели, когда она получает первую ошибку в 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, и после выполнения запроса на исправление я получаю следующий ответ:

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

Я не хочу, чтобы проверка модели продолжалась, когда она гарантировала, что электронная почта не существует в базе данных, простоверните эту ошибку и больше не продолжайте проверку.

1 Ответ

0 голосов
/ 06 октября 2018

Вы можете настроить максимальное количество ошибок, которые 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).Вы можете настроить этот номер, вставив следующий код в метод ConfigureServices в файле Startup.cs:

При этом не обязательно контролировать, в каком порядке обрабатываются эти ошибки.Чтобы справиться с этим, вам может потребоваться добавить некоторую пользовательскую логику проверки, которая также обсуждается в приведенной выше ссылке.

...