Создание компонентов представлений как наследников класса ViewComponent имеет ещё одно преимущество — благодаря такому подходу мы получаем доступ ряду полезных для работы нашего компонента свойств. Рассмотрим пример использования этих свойств в приложении.
Компоненты представлений в ASP.NET Core MVC
Компоненты представлений в ASP.NET Core MVC. ViewComponentResult и работа с представлениями
Как правило, компонент представления наследуется от ViewComponent, инициализирует модель и передает ее в представление, вызвав один из перегруженных методов View() класса ViewComponent. Именно эти методы генерирует объект ViewComponentResult.
Компоненты представлений в 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 какие-либо части — облако тегов, меню, различного рода виджеты, которые в коде могут быть представлены отдельными компонентами представлений. Компоненты представлений очень похожи на частичные представления, о которых мы уже знаем, но, при этом, обладают рядом особенностей, с которыми мы и познакомимся в этой части.