Как правило, компонент представления наследуется от ViewComponent, инициализирует модель и передает ее в представление, вызвав один из перегруженных методов View() класса ViewComponent. Именно эти методы генерирует объект ViewComponentResult.
ASP.NET Core MVC
Компоненты представлений в ASP.NET Core MVC. Вывод результатов компонента (IViewComponentResult)
До сих пор мы использовали компоненты представлений, которые в качестве результата выводили обычную строку string, что, строго говоря, не совсем корректно. Обычно, в качестве результата метода Invoke()/InvokeAsync() возвращается объект, реализующий интерфейс IViewComponentResult или, в случае использования асинхронного метода, Task<IViewComponentResult>. Здесь можно провести аналогию с контроллерами — технически, действие контроллера может возвращать и обычные строки, однако на практике контроллеры всё же возвращают один из объектов, реализующих IActionResult. Сегодня рассмотрим варианты использования классов, реализующих этот интерфейс для вывода результатов компонента представлений.
Компоненты представлений в ASP.NET Core MVC. Передача данных в компоненты
Компоненты представлений в ASP.NET Core MVC могут использовать в своей работе различные данные, получаемые из вне. Это могут быть какие-то параметры в виде строк, чисел и т.д., объекты, содержащие наборы параметров или зависимости. В этой части мы рассмотрим несколько возможных вариантов передачи данных в компоненты представлений.
Компоненты представлений в ASP.NET Core MVC. Определение компонента
Компоненты представлений (View Components) в ASP.NET Core MVC — это ещё одна функциональная особенность платформы. Формально, компонент представления представляющие собой класс C# (обычно POCO), связанный с представлением и выполняющий определенные задачи в представлении. Например, мы можем выделить в приложении ASP.NET Core MVC какие-либо части — облако тегов, меню, различного рода виджеты, которые в коде могут быть представлены отдельными компонентами представлений. Компоненты представлений очень похожи на частичные представления, о которых мы уже знаем, но, при этом, обладают рядом особенностей, с которыми мы и познакомимся в этой части.
Tag-хэлперы в ASP.NET Core MVC. Управление выводом (TagHelperOutput)
Объект класса TagHelperOutput позволяет управлять выводом tag-хэлпера. До сих пор мы использовали объект этого класса в ограниченном виде — просто указывали html-тэг для хэлпера и содержимое этого тэга. В этой части мы более подробно познакомимся с классом TagHelperOutput
Tag-хэлперы в ASP.NET Core MVC. Асинхронные операции в tag-хэлперах
В предыдущей части мы рассмотрели простой пример собственного tag-хэлпера для вывода дня недели. При этом, tag-хэлперы могут содержать внутри себя другие tag-хэлперы, обращаться (как и любые другие классы) к данным содержащимся, например, в базе данных и так далее. В таких случаях мы можем использовать асинхронные операции в tag-хэлперах.
Tag-хэлперы в ASP.NET Core MVC. Создание tag-хэлперов
ASP.NET Core MVC предоставляет достаточно tag-хэлперов, упрощающих нам выполнение различных задач, начиная от создания форм для отправки данных на сервер и. заканчивая, tag-хэлперами для кэширования данных. Вместе с этим, мы можем создавать собственные tag-хэлперы с помощью которых мы можем реализовывать какие-либо операции в представлениях. Здесь и далее мы рассмотрим процесс создания собственных tag-хэлперов в ASP.NET Core MVC.
Tag-хэлперы в ASP.NET Core MVC. Распределенное кэширование (DistributedCacheTagHelper)
Помимо обычного кэширования в памяти с использованием tag-хэлпера CacheTagHelper, в ASP.NET Core MVC мы также можем задействовать распределенное кэширование с использованием какого-либо внешнего источника. Для этого используется tag-хэлпер DistributedCacheTagHelper. Распределенное кэширование (Distributed Cache) удобно использовать в том случае, если нужен общий кэш для нескольких машин. Распределенный кэш хранится в какой-либо внешней службе и, если один сервер сохранил элемент кэша, то другие серверы могут его использовать. Например,для распределенного кэша может использоваться такой сервис, как Redis или SQL Server.
Tag-хэлперы в ASP.NET Core MVC. CacheTagHelper
Tag-хэлпер CacheTagHelper представлен в ASP.NET Core MVC тэгом <cache> и позволяет кэшировать заданную часть представления в памяти сервера.
Tag-хэлперы в ASP.NET Core MVC. Tag-хэлперы LinkTagHelper, ScriptTagHelper и EnvironmentTagHelper
Tag-хэлперы LinkTagHelper и ScriptTagHelper, обычно, широко используются в макетах приложения для подключения в проект css-файлов и скриптов.