У меня есть следующий класс модели (для простоты):
public class Info
{
public int IntData { get; set; }
}
Вот моя форма Razor, которая использует эту модель:
@model Info
@Html.ValidationSummary()
@using (Html.BeginForm())
{
@Html.TextBoxFor(x => x.IntData)
<input type="submit" />
}
Теперь, если я введу нечисловые данные в текстовое поле, я получу правильное сообщение проверки, т. Е. «Значение« qqqqq »недопустимо для поля« IntData »».
Но если я введу очень длинную последовательность цифр (например, 345234775637544), я получу ПУСТОЙ отчет о проверке.
В коде моего контроллера я вижу, что ModelState.IsValid
равен false
, как ожидалось, а ModelState["IntData"].Errors[0]
выглядит следующим образом:
{System.Web.Mvc.ModelError}
ErrorMessage: ""
Exception: {"The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information."}
(exception itself) [System.InvalidOperationException]: {"The parameter conversion from type 'System.String' to type 'System.Int32' failed. See the inner exception for more information."}
InnerException: {"345234775637544 is not a valid value for Int32."}
Как видите, проверка работает нормально, но не выдает сообщение об ошибке пользователю.
Можно ли настроить поведение подшивки модели по умолчанию, чтобы в этом случае отображалось правильное сообщение об ошибке? Или мне придется написать пользовательский переплет?