TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.75K subscribers
Post #452 945
День триста семьдесят восьмой. #ЗаметкиНаПолях
ASP.NET MVC 5.
Аннотации и Валидация Данных. Начало
Когда мы говорим о проверке в контексте MVC, мы в первую очередь имеем в виду проверку значений модели. Функции валидации в ASP.NET MVC помогают в этом. Они являются расширяемыми: вы можете создавать собственные схемы проверки, но чаще используется декларативный стиль проверки, известный как аннотации данных.
Аннотации данных - это атрибуты в основном из пространства имен System.ComponentModel.DataAnnotations, которыми помечаются свойства модели. Это обеспечивает проверку на стороне сервера, но платформа также поддерживает проверку на стороне клиента. Большинство атрибутов валидации имеют необязательный параметр ErrorMessage, хранящий сообщение об ошибке, которое получит пользователь.

Основные атрибуты валидации данных
Required
– обязательное поле:
[Required(ErrorMessage="Пожалуйста, введите имя")]

Range – диапазон допустимых значений. Граничные значения включаются. Перегруженная версия принимает тип и две строки, что позволяет задать числа с точкой или даты:
[Range(100,500,ErrorMessage="Введите корректное число")]
[Range(typeof(decimal), "0.00", "49.99")]

StringLength – максимальная (необязательно – минимальная) длина строки:
[StringLength(30, MinimumLength=3)]

RegularExpression – регулярное выражение для проверки, например, e-mail адреса:
[RegularExpression(@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$")]

Compare – принимает имя другого свойства модели и проверяет значения на равенство (например, для проверки равенства введённых паролей при регистрации):
[Compare("Password")]

Remote – позволяет выполнять валидацию на стороне клиента при помощи обратного вызова на сервер. Принимает имя метода действия и контроллера:
[Remote("CheckUserName", "Account")]

Следующие аннотации позволяют помощникам HTML EditorFor или LabelFor правильно отображать свойства модели в представлении:
Display – «дружелюбное» к пользователю имя свойства для отображения:
[Display(Name="Название")]

DataType – тип данных для отображения:
[DataType(DataType.Text)]

DisplayFormat – формат данных для отображения:
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}")]

HiddenInput – сообщает, что это свойство нужно отобразить как скрытое поле.

ReadOnly – запрещает связывателю модели изменять значение свойства, но EditorForModel всё равно отобразит свойство как поле для ввода:
[ReadOnly(true)]

ScaffoldColumn – скрывает свойство от HTML помощников EditorForModel и DisplayForModel. Однако, связыватель модели всё равно постарается задать ему значение, если найдёт соответствующий параметр в запросе.
[ScaffoldColumn(false)]

Источник: Jon Galloway “Professional ASP.NET MVC 5”. – John Wiley & Sons Inc., 2014. Глава 6.
  • 👍 1
More from @netdeveloperdiary
  1. Oct 4, 2026День 2804. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  2. Oct 3, 2026Post #3360
  3. Oct 3, 2026День 2803. #Оффтоп Чем Заняться, Пока Работают Агенты? У VS Code Есть Ответ Сейчас большую…
  4. Oct 2, 2026День 2802. #Карьера #Юмор Секреты Программирования, Известные Только Легендам Ещё один пос…
  5. Oct 1, 2026Post #3357
  6. Sep 30, 2026Post #3356
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →