Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 620 621 622 623 624 625 626 627 628 ... 642

public IActionResult Edit()

{

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  return View();

}

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

Создайте в каталоге 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

{

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  public class ItemCreateTagHelper : ItemLinkTagHelperBase

  {

  }

}

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

public ItemCreateTagHelper(

    IActionContextAccessor contextAccessor,

    IUrlHelperFactory urlHelperFactory)

      : base(contextAccessor, urlHelperFactory) {}

Переопределите метод Process(), чтобы вызывать метод BuildContent() базового класса:

public override void Process(TagHelperContext context, TagHelperOutput output)

{

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  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

{

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  public class ItemListTagHelper : ItemLinkTagHelperBase

  {

  }

}

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

public ItemListTagHelper(

    IActionContextAccessor contextAccessor,

    IUrlHelperFactory urlHelperFactory)

      : base(contextAccessor, urlHelperFactory) {}

Переопределите метод Process(), чтобы вызывать метод BuildContent() базового класса:

public override void Process(TagHelperContext context, TagHelperOutput output)

{

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  BuildContent(output,nameof(CarsController.Index),

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

}

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

public IActionResult Index()

{

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  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 (например) существует, то оно будет применяться для визуализации объекта с помощью приведенного ниже вызова:

1 ... 620 621 622 623 624 625 626 627 628 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий