ввод номера проверяется, но не связывается - PullRequest
0 голосов
/ 11 октября 2018

Я только что столкнулся со странным поведением с проверкой mvc и привязкой к int.У меня есть моя модель как:

class YourModel
{
   ...

   [Range(0, int.MaxValue, ErrorMessage = "Invalid")]
   public int Area { get; set; }

   ...
} 

просмотр:

<div class="form-group">
  <label class="control-label">Area (m<sup>2</sup>)</label>
  <input asp-for="Area" class="form-control" />
  <span asp-validation-for="Area"></span>
</div>

с учетом вышеизложенного, вход с радостью принимает ввод, скажем, 37.90, но беззвучно ставит 0 (int по умолчанию) при отправке формы.Бедный пользователь задается вопросом, почему он не экономит, и после пары испытаний она начинает злиться на разработчика (в данном случае на меня).

Какая логика стоит за проверкой int?

1 Ответ

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

Тип ввода десятичный, а тип свойства Area - int.Когда ModelBinder пытается преобразовать десятичный ввод '37 .90 'в int, происходит сбой и присваивается 0 (значение int по умолчанию) свойству Area.

Согласно правилу проверки диапазона любое значение лежит в диапазоне от 0 до максимального значения intявляется допустимым, поэтому оно удовлетворяет правилу проверки (поскольку значение свойства Area равно 0) и не отображает никаких ошибок.

Вам следует изменить тип данных свойства Area в классе модели на double и в соответствии с этим скорректировать диапазонValidator.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...