Услуги Сертификаты Новости Статьи База знаний Алгоритмы Портфолио Скачать Ссылки Поиск
Услуги arrow Статьи arrow ASP.NET MVC Validation: валидация типа Int32
ASP.NET MVC Validation: валидация типа Int32 Версия для печати Отправить на e-mail
26.04.2011

Хочу рассказать о валидации поля модели типа Int32.

Особенность валидации данного типа состоит в том, что стандартной проверки на интервал значений, обязательность заполнения и неотрицательность иногда не хватает.

Например, если в поле введено текстовое значение. В данном случае, все вышеперечисленные валидации, не сработают и будет выведено стандартное сообщение о неверном значении (на английском языке). Не сработает, также, перехват регулярным выражением, но задачу можно решить валидацией на стороне контроллера.

Ниже приведен пример поля модели, проверка которого будет выполняться

  1. /// <summary>
  2. /// Максимальная длина сообщения
  3. /// </summary>
  4. [Required(ErrorMessage = "Не указано значение")]
  5. [Range( 0, int.MaxValue, ErrorMessage = "Значение должно быть в дипазоне от {1} до {2}")]
  6. [DataMember]
  7. public int? MaxMessageLength { get; set; }

На стороне контроллера выполняется вторая часть валидации (здесь присутствует дублирование проверки диапазона введенных значений)

  1. if (!projectInfo.MaxMessageLength.HasValue || projectInfo.MaxMessageLength <  0)
  2. {
  3.     ModelState.AddModelError("MaxMessageLength", "Поле должно содержать значение");
  4. }
  5. if (ModelState.IsValid)
  6. {
  7.     ...
  8. }
  9. else
  10. {
  11.     if (ModelState["MaxMessageLength"].Errors.Count >  0)
  12.     {
  13.         ModelState["MaxMessageLength"].Errors.Clear();
  14.         ModelState.AddModelError("MaxMessageLength", String.Format("Значение должно быть в диапазоне {0} до {1}",  0, int.MaxValue));
  15.     }
  16.     return View(projectInfo);
  17. }
Последнее обновление ( 26.04.2011 )
 
< Пред.   След. >