Для того, чтобы установить правила отображения свойств модели в представлениях используются аннотации данных — специальные атрибуты, применяемые к свойствам модели. Эти атрибуты, как и большинство атрибутов валидации, располагаются в пространстве имен System.ComponentModel.DataAnnotations.
Модели в ASP.NET Core MVC
Модели в ASP.NET Core MVC. Самовалидация модели
Самовалидация модели — процесс, при котором модель сама запускает процесс валидации и инкапсулирует все результаты валидации. Для того, чтобы модель могла запускать процесс самовалидации, она должна реализовывать интерфейс IValidatableObject
.
Модели в ASP.NET Core MVC. Создание атрибута валидации
В целом, тех атрибутов валидации модели, которые уже имеются в ASP.NET Core MVC вполне достаточно для работы, однако, если этих возможностей по каким-либо причинам недостаточно, то мы можем создать свой атрибут валидации и использовать его в приложении.
Модели в ASP.NET Core MVC. Tag-хэлперы валидации
В предыдущей части мы затронули такую тему как tag-хэлперы. Тема достаточно интересная и обширная и здесь мы продолжим её рассмотрение с точки зрения использования различных tag-хэлперов для валидации модели в ASP.NET Core MVC.
Модели в ASP.NET Core MVC. Валидация на стороне клиента
До этого момента мы использовали механизмы валидации модели на стороне сервера. То есть, прежде, чем пройти валидацию, модель отправлялась на сервер и уже на сервере запускался механизм валидации. Вместе с этим, в ASP.NET Core MVC предусмотрен и другой подход к валидации данных — валидация на стороне клиента. Валидация на стороне клиента позволяет избежать лишних запросов к серверу и использует специальные библиотеки JavaScript, разработанные Microsoft на основе jQuery.
Модели в ASP.NET Core MVC. Атрибуты валидации
Атрибуты валидации модели позволяют подключать к проверке тех или иных свойств дополнительную логику. Например, мы можем проверять строковые значения на соответствие регулярному выражению или проверять вхождение числа в заданный диапазон значений и т.д.
Модели в ASP.NET Core MVC. Валидация модели
Валидация модели занимает ключевое место в разработке приложения в целом так как позволяет выявить какие-либо ошибки в модели до того как эти ошибки приведут к аварийной остановке приложения или получению некорректного результата. В ASP.NET Core MVC валидация модели базируется на общем для .NET механизме валидации, но, при этом дополняет этот механизм некоторыми другими возможностями, например, использованием атрибута Remote
.
Модели в ASP.NET Core MVC. Управление привязкой модели
Может быть такая ситуация, что свойство модели, имеющее ссылочный нам не требуется для нормальной работы действия контроллера. Однако, как мы уже знаем, если ссылочному типу в модели присваивается null
, то привязчик модели завершается ошибкой и ModelState.IsValid
возвращает false
. Для того, чтобы приложение могло работать нормально, в этом и других случаях необходимо управление привязкой модели, которое осуществляется с использованием различных атрибутов.
Модели в ASP.NET Core MVC. Привязка модели
Привязка модели (model binding) в ASP.NET Core MVC — это механизм сопоставления параметров HTTP-запроса с параметрами методами контроллера. Мы уже сталкивались с работой этого механизма (просто не знали, что это он), когда разбирались с обработкой форм в контроллерах. Здесь мы вернемся к изучению работы механизма привязки модели, но уже изучим его более подробно.
Модели в ASP.NET Core MVC. Введение
Третий элемент MVC — модель. Именно этот компонент в нашем приложении должен отвечать за всю бизнес-логику — проводить необходимые вычисления, анализ данных и т.д. Как правило, в приложении ASP.NET Core MVC используются различные сущности, например, сущность «пользователь», «книга», «книжный шкаф» и т.д. Как правило (но не всегда), для каждой сущности создается своя модель в виде POCO-класса (plain-old CRL objects), то есть класса без каких-либо зависимостей, методов и атрибутов.