введите описание ссылки здесь Так работает DecimalModelBinder (см. Второй ответ, в основном, механизм связывания десятичной модели возвращает false для 1, 2 и / или 3 ...).Это видеть 1, 2 и 3 только как целые числа.
Попробуйте ввести 1.00, и он возьмет его.
Это все о магии, это ModelBinders и здесь . Вот хороший обзор.
Вот пример как его расширить .
Еще один обзор с некоторыми советами по использованию преимуществпривязка модели.
Вы также можете загрузить исходный код, чтобы узнать, что он делает.На сайте codeplex есть полезная информация, которая также может вам помочь.
РЕДАКТИРОВАТЬ - Чтобы ответить на ваши вопросы в комментариях ...
Вы можете изменить сообщение об ошибке, используя Аннотации данных .Проверьте это также.Вы также можете создавать свои собственные аннотации данных, если вам не нравится, как работают стандартные / встроенные.Вы также можете локализовать свои сообщения проверки .
Вот еще один хороший обзор , в котором рассматриваются некоторые методы, которые вы можете использовать для проверки.Вы можете добавить проверку непосредственно в модель, а также использовать аннотации.Особый интерес для вас может представлять проверка с использованием интерфейса IDataErrorInfo , интерфейса IValidatableObject и / или удаленной проверки .