У меня есть следующий класс модели (вырезанный для простоты):
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"]. Ошибки [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."}
Как видите, проверка работает нормально, но не выдает сообщение об ошибке для пользователя.
Могу ли я настроить поведение привязки модели по умолчанию, чтобы в этом случае отображалось правильное сообщение об ошибке ? Или мне придется написать собственный связыватель?