Читаем Язык программирования C#9 и платформа .NET5 полностью

Внутри папки Views имеется специальная папка по имени Shared, которая доступна всем контроллерам и их методам действий. Если представление не удалось найти в папке с именем контроллера, тогда поиск представления продолжается в папке Shared.

<p id="AutBody_Root1328"><strong>Папка wwwroot (нововведение в ASP.NET Core)</strong></p>

Улучшением по сравнению ASP.NET MVC стало создание особой папки по имени wwwroot для веб-приложений ASP.NET Core. В ASP.NET MVC файлы JavaScript, изображений, CSS и другое содержимое клиентской стороны смешивалось в остальных папках. В ASP.NET Core все файлы клиентской стороны содержатся в папке wwwroot. Такое отделение скомпилированных файлов от файлов клиентской стороны значительно проясняет структуру проекта при работе с ASP.NET Core.

<p id="AutBody_Root1329"><strong>Контроллеры и действия</strong></p>

Как и в ASP.NET MVC и ASP.NET Web API, контроллеры и методы действий являются основополагающими компонентами приложения ASP.NET Core MVC или API.

<p id="AutBody_Root1330"><strong>Класс Controller</strong></p>

Ранее уже упоминалось, что инфраструктура ASP.NET Core унифицировала ASP.NET MVC5 и ASP.NETWeb API. Такая унификация также привела к объединению базовых классов Controller.ApiController и AsyncController из MVC5 и Web API 2.2 в один новый класс Controller, который имеет собственный базовый класс по имени ControllerBase. Контроллеры веб-приложений ASP.NET Core наследуются от класса Controller, тогда как контроллеры служб ASP.NET — от класса ControllerBase (рассматривается следующим). Класс Controller предлагает множество вспомогательных методов для веб-приложений, наиболее часто используемые из которых перечислены в табл. 29.1.

<p id="AutBody_Root1331"><strong>Класс ControllerBase</strong></p>

Класс ControllerBase обеспечивает основную функциональность для веб-приложений и служб ASP.NET Core, и вдобавок предлагает вспомогательные методы для возвращения кодов состояния HTTP. В табл. 29.2 описана основная функциональность класса ControllerBase, а в табл. 29.3 перечислены некоторые вспомогательные методы для возвращения кодов состояния HTTP.

<p id="AutBody_Root1332"><strong>Действия</strong></p>

Действия — это методы в контроллере, которые возвращают экземпляр типа IActionResult (или Task для асинхронных операций) либо класса, реализующего IActionResult, такого как ActionResult или ViewResult. Действия будут подробно рассматриваться в последующих главах.

<p id="AutBody_Root1333"><strong>Привязка моделей</strong></p>

Привязка моделей представляет собой процесс, в рамках которого инфраструктура ASP.NET Core использует пары "имя-значение", отправленные НТТР-методом POST, для присваивания значений свойствам моделей. Для привязки к ссылочному типу пары "имя-значение" берутся из значений формы или тела запроса, ссылочные типы обязаны иметь открытый стандартный конструктор, а свойства, участвующие в привязке, должны быть открытыми и допускать запись. При присваивании значений везде, где это применимо, используются неявные преобразования типов (вроде установки значения свойства string в значение int). Если преобразование типа терпит неудачу, тогда такое свойство помечается как имеющее ошибку Прежде чем начать подробное обсуждение привязки, важно понять предназначение словаря ModelState и его роль в процессе привязки (а также проверки достоверности).

<p id="AutBody_Root1334"><strong>Словарь ModelState</strong></p>

Словарь ModelState содержит записи для всех привязываемых свойств и запись для самой модели. Если во время привязки возникает ошибка, то механизм привязки добавляет ее к записи словаря для свойства и устанавливает ModelState.IsValid в false. Если всем нужным свойствам были успешно присвоены значения, тогда механизм привязки устанавливает ModelState.IsValid в true.

На заметку! Проверка достоверности модели, которая тоже устанавливает записи словаря ModelState, происходит после привязки модели. Как неявная, так и явная привязка модели автоматически вызывает проверку достоверности для модели. Проверка достоверности рассматривается в следующем разделе.

<p id="AutBody_Root1335"><strong>Добавление специальных ошибок в словарь ModelState</strong></p>

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

ModelState.AddModelError("PetName","Name is required");

Чтобы добавить ошибку для целой модели, указывайте в качестве имени свойства string.Empty:

ModelState.AddModelError(string.Empty, $"Unable to create record: {ex.Message}");

<p id="AutBody_Root1336"><strong>Неявная привязка моделей</strong></p>
Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT