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

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

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен. Жанр: Программирование год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:
TagHelper. Приведите код класса к следующему виду:

using AutoLot.Mvc.Controllers;

using AutoLot.Services.Utilities;

using Microsoft.AspNetCore.Mvc;

using Microsoft.AspNetCore.Mvc.Infrastructure;

using Microsoft.AspNetCore.Mvc.Routing;

using Microsoft.AspNetCore.Razor.TagHelpers;

namespace AutoLot.Mvc.TagHelpers.Base

{

  public abstract class ItemLinkTagHelperBase : TagHelper

  {

  }

}

Добавьте конструктор, который принимает экземпляры реализаций IActionContextAccessor и IUrlHelperFactory. Используйте UrlHelperFactory с ActionContextAccessor, чтобы создать экземпляр реализации IUrlHelper, и сохраните его в переменной уровня класса. Вот необходимый код:

protected readonly IUrlHelper UrlHelper;

protected ItemLinkTagHelperBase(IActionContextAccessor contextAccessor,

                                IUrlHelperFactory urlHelperFactory)

{

  UrlHelper = urlHelperFactory.GetUrlHelper(contextAccessor.ActionContext);

}

Добавьте открытое свойство для хранения Id элемента:

public int? ItemId { get; set; }

При вызове вспомогательной функции дескриптора вызывается метод Process(), принимающий два параметра, TagHelperContext и TagHelperOutput. Параметр TagHelperContext применяется для получения остальных атрибутов дескриптора и словаря объектов, которые используются с целью взаимодействия с другими вспомогательными функциями дескрипторов, нацеленными на дочерние элементы. Параметр TagHelperOutput применяется для создания визуализированного вывода. Поскольку это базовый класс, создайте метод по имени BuildContent(), который производные классы смогут вызывать из метода Process(). Добавьте следующий код:

protected void BuildContent(TagHelperOutput output,

  string actionName, string className, string displayText, string fontAwesomeName)

{

  output.TagName = "a";   // Заменить <item-list> дескриптором <a>.

  var target = (ItemId.HasValue)

    ? UrlHelper.Action(actionName,

       nameof(CarsController).RemoveController(), new {id = ItemId})

    : UrlHelper.Action(actionName, nameof(CarsController).RemoveController());

  output.Attributes.SetAttribute("href", target);

  output.Attributes.Add("class",className);

  output.Content.AppendHtml($@"{displayText}

    <i class=""fas fa-{fontAwesomeName}""></i>");

}

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

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

Создайте в каталоге TagHelpers новый файл класса по имени ItemDetailsTagHelper.cs. Сделайте класс ItemDetailsTagHelper открытым и унаследованным от класса 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 ItemDetailsTagHelper : ItemLinkTagHelperBase

  {

  }

}

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

public ItemDetailsTagHelper(

    IActionContextAccessor contextAccessor,

    IUrlHelperFactory urlHelperFactory)

      : base(contextAccessor, urlHelperFactory) {}

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

public override void Process(TagHelperContext context, TagHelperOutput output)

{

  BuildContent(output,nameof(CarsController.Details),

              "text-info","Details","info-circle");

}

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

public IActionResult Details()

{

  return View();

}

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

Создайте в каталоге TagHelpers новый файл класса по имени ItemDeleteTagHelper.cs. Сделайте класс ItemDeleteTagHelper открытым и унаследованным от класса 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 ItemDeleteTagHelper : ItemLinkTagHelperBase

  {

  }

}

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

public ItemDeleteTagHelper(

    IActionContextAccessor contextAccessor,

    IUrlHelperFactory urlHelperFactory)

      : base(contextAccessor, urlHelperFactory) {}

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

public override void Process(TagHelperContext context, TagHelperOutput output)

{

  BuildContent(output,nameof(CarsController.Delete),"text-danger","Delete","trash");

}

Код создает ссылку Delete (Удалить) с изображением значка мусорного ящика из Font Awesome. Чтобы не возникали ошибки при компиляции, добавьте в CarsController базовый метод Delete():

public IActionResult Delete()

{

  return View();

}

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

Создайте в каталоге TagHelpers новый файл класса по имени ItemEditTagHelper.cs. Сделайте класс ItemEditTagHelper открытым и унаследованным от класса 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 ItemEditTagHelper : ItemLinkTagHelperBase

  {

  }

}

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

public ItemEditTagHelper(

    IActionContextAccessor contextAccessor,

    IUrlHelperFactory urlHelperFactory)

      : base(contextAccessor, urlHelperFactory) {}

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

public override void Process(TagHelperContext context, TagHelperOutput output)

{

  BuildContent(output,nameof(CarsController.Edit),"text-warning","Edit","edit");

}

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

public IActionResult Edit()

{

  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

{

  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 новый файл класса по имени

Перейти на страницу:

Эндрю Троелсен читать все книги автора по порядку

Эндрю Троелсен - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


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

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


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*