Чтение онлайн

ЖАНРЫ

Язык программирования C#9 и платформа .NET5
Шрифт:

Вспомогательная функция дескриптора для создания элемента

Создайте в каталоге

TagHelpers
новый файл класса по имени
itemCreateTagHelper.cs
. Сделайте класс
ItemCreateTagHelper
открытым и унаследованным от класса
ItemLinkTagHelperBase
. Добавьте в новый файл следующий код:

using AutoLot.Mvc.Controllers;

using AutoLot.Mvc.TagHelpers.Base;

using Microsoft.AspNetCore.Mvc.Infrastructure;

using Microsoft.AspNetCore.Mvc.Routing;

using Microsoft.AspNetCore.Razor.TagHelpers;

namespace AutoLot.Mvc.TagHelpers

{

public class ItemCreateTagHelper : ItemLinkTagHelperBase

{

}

}

Добавьте

открытый конструктор, который принимает обязательные экземпляры и передает их конструктору базового класса:

public ItemCreateTagHelper(

IActionContextAccessor contextAccessor,

IUrlHelperFactory urlHelperFactory)

: base(contextAccessor, urlHelperFactory) {}

Переопределите метод

Process
, чтобы вызывать метод
BuildContent
базового класса:

public override void Process(TagHelperContext context, TagHelperOutput output)

{

BuildContent(output,nameof(CarsController.Create),"text-success","Create new","plus");

}

Код создает ссылку Create new (Создать) с изображением значка плюса из Font Awesome.

Вспомогательная функция дескриптора для вывода списка элементов

Создайте в каталоге

TagHelpers
новый файл класса по имени
ItemListTagHelper.cs
. Сделайте класс
ItemListTagHelper
открытым и унаследованным от класса
ItemLinkTagHelperBase
. Добавьте в новый файл показанный ниже код:

using AutoLot.Mvc.Controllers;

using AutoLot.Mvc.TagHelpers.Base;

using Microsoft.AspNetCore.Mvc.Infrastructure;

using Microsoft.AspNetCore.Mvc.Routing;

using Microsoft.AspNetCore.Razor.TagHelpers;

namespace AutoLot.Mvc.TagHelpers

{

public class ItemListTagHelper : ItemLinkTagHelperBase

{

}

}

Добавьте открытый конструктор, который принимает обязательные экземпляры и передает их конструктору базового класса:

public ItemListTagHelper(

IActionContextAccessor contextAccessor,

IUrlHelperFactory urlHelperFactory)

: base(contextAccessor, urlHelperFactory) {}

Переопределите метод

Process
, чтобы вызывать метод
BuildContent
базового класса:

public override void Process(TagHelperContext context, TagHelperOutput output)

{

BuildContent(output,nameof(CarsController.Index),

"text-default","Back to List","list");

}

Код

создает ссылку Back to List (Список) с изображением значка списка из Font Awesome. Чтобы не возникали ошибки при компиляции, добавьте в
CarsController
базовый метод
Index
:

public IActionResult Index

{

return View;

}

Обеспечение видимости специальных вспомогательных функций дескрипторов

Чтобы сделать специальные вспомогательные функции дескрипторов видимыми, потребуется выполнить команду

@addTagHelper
для представлений, которые используют эти вспомогательные функции дескрипторов, или поместить ее в файл
_ViewImports.cshtml
. Откройте файл
_ViewImports.cshtml
в каталоге Views и добавьте в него следующую строку:

@addTagHelper *, AutoLot.Mvc

Вспомогательные функции HTML

Вспомогательные функции HTML из ASP.NET MVC по-прежнему поддерживаются, а некоторые из них применяются довольно широко и перечислены в табл. 31.5.

Вспомогательная функция DisplayFor

Вспомогательная функция

DisplayFor
отображает объект, определяемый выражением. Если для отображаемого типа существует шаблон отображения, тогда он будет применяться при создании HTML-разметки, представляющей элемент. Например, если моделью представления является сущность
Car
, то информацию о производителе автомобиля можно отобразить следующим образом:

@Html.DisplayFor(x=>x.MakeNavigation);

Если в каталоге

DisplayTemplates
присутствует представление по имени
Make.cshtml
, тогда оно будет использоваться для визуализации значений (вспомните, что поиск имени шаблона базируется на типе объекта, а не на имени его свойства). Если представление по имени
ShowMake.cshtml
(например) существует, то оно будет применяться для визуализации объекта с помощью приведенного ниже вызова:

@Html.DisplayFor(x=>x.MakeNavigation, "ShowMake");

В случае если шаблон не указан и отсутствует представление с именем класса, тогда для создания HTML-разметки, подлежащей отображению, используется рефлексия.

Вспомогательная функция DisplayForModel

Вспомогательная функция

DisplayForModel
отображает модель для представления. Если для отображаемого типа существует шаблон отображения, то он будет применяться при создании HTML-разметки, представляющей элемент. Продолжая предыдущий пример представления с сущностью
Car
в качестве модели, полную информацию
Car
можно отобразить следующим образом:

Поделиться с друзьями: