Связыватель по умолчанию ASP.NET MVC: слишком длинные целые числа, пустое сообщение об ошибке проверки

У меня есть следующий класс модели (вырезанный для простоты):

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."}

Как видите, проверка работает нормально, но не выдает сообщение об ошибке для пользователя.

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

7
задан Zruty 6 June 2011 в 12:40
поделиться