Tag-хэлперы LinkTagHelper и ScriptTagHelper, обычно, широко используются в макетах приложения для подключения в проект css-файлов и скриптов.
LinkTagHelper
Хэлпер LinkTagHelper определяет тег <link>, используемый для подключения файлов стилей (*.css). Для этого tag-хэлпера могут использоваться следующие атрибуты:
| Атрибут | Описание |
asp-append-version |
если имеет значение true, то к пути к названию файла стиля добавляется номер версии. |
asp-fallback-href |
указывает вспомогательный путь к файлу стиля, который используется, если загрузка файла, указанного в атрибуте href пройдет неудачно |
asp-fallback-test-class |
определяет класс, который используется для теста загрузки стиля из атрибута href |
asp-fallback-test-property |
определяет свойство, которое используется для тестирования загрузки стиля из атрибута href |
asp-fallback-test-value |
определяет значение свойства из атрибута asp-fallback-test-property, которое используется для теста загрузки стиля из атрибута href |
asp-href-include |
определяет через запятую набор шаблонов подключаемых файлов стилей |
asp-href-exclude |
определяет через запятую набор шаблонов для тех файлов, которые следует исключить из загрузки |
asp-fallback-href-include |
определяет через запятую набор шаблонов файлов, которые подключаются в том случае, если загрузка основного файла стиля из атрибута href прошла неудачно |
asp-fallback-href-exclude |
определяет через запятую набор шаблонов файлов, которые следует исключить из загрузки в том случае, если загрузка основного файла стиля из атрибута href прошла неудачно |
Использование этого tag-хэлпера можно увидеть в основном макете шаблонного приложения ASP.NET Core MVC:
!DOCTYPE html>
<html lang="en">
<head>
...
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/AspTagHelpers.styles.css" asp-append-version="true" />
</head>
<body>
...
</body>
</html>
В качестве примера, изменим способ загрузки фреймворка Bootstrap в проект (первая ссылка в коде выше) следующим образом:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-test-class="hidden"
asp-fallback-test-property="visibility"
asp-fallback-test-value="hidden" />
В данном случае, в атрибуте href мы указываем основной файл фреймворка, который должен загружаться с внешнего ресурса. Если по каким-либо причинам файл не загрузится, то будет использоваться локальная версия файла, которая располагается в папке wwwroot/lib/bootstrap/dist/css/. Для того, чтобы протестировать возможность загрузки файла, расположенного по основному пути мы используем атрибуты asp-fallback-test-class, asp-fallback-test-property, asp-fallback-test-value. В значениях этих атрибутов мы указываем класс, свойство и значение, определенные в файле стилей.
В итоге, будет сформирована следующая разметка:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" />
<meta name="x-stylesheet-fallback-test" content="" class="hidden" /><script>!function(a,b,c,d){var e,f=document,g=f.getElementsByTagName("SCRIPT"),h=g[g.length-1].previousElementSibling,i=f.defaultView&&f.defaultView.getComputedStyle?f.defaultView.getComputedStyle(h):h.currentStyle;if(i&&i[a]!==b)for(e=0;e<c.length;e++)f.write('<link href="'+c[e]+'" '+d+"/>")}("visibility","hidden",["/lib/bootstrap/dist/css/bootstrap.min.css"], "rel=\u0022stylesheet\u0022 ");</script>
Определение шаблона пути загрузки
Шаблоны пути используются в атрибутах asp-{..}-href-include или asp-{..}-href-exclude для того, чтобы указать сразу несколько файлов для загрузки. Для создания шаблона пути загрузки мы можем применять символы подстановки:
?— заменяет любой одиночный символ за исключением слеша/.*— заменяет любое количество символов за исключением слеша.**— заменяет любое количество символов, в том числе и слеш.
Например, мы можем указать такой путь в атрибуте asp-href-include:
<link asp-href-include="~/css/**/*.css" asp-append-version="true" />
то, в итоге, в проект будут загружены все css-файлы расположенные в каталоге wwwroot/css и всех его подкаталогах.
ScriptTagHelper
Tag-хэлпер ScriptTagHelper используется для подключения файлов со скриптами . Данный хэлпер также может принимать ряд атрибутов, которые по своему действию аналогичны атрибутам хэлпера LinkTagHelper
| Атрибут | Описание |
asp-append-version |
если значение true, то к пути к файлу скрипта добавляется номер версии |
asp-fallback-src |
указывает вспомогательный путь к скрипту, который используется, если загрузка скрипта, указанного в атрибуте src пройдет неудачно |
asp-fallback-test |
определяет выражение, которое тестирует загрузку основного скрипта из атрибута src |
asp-src-include |
определяет шаблон подключаемых файлов, через запятую можно задать несколько шаблонов |
asp-src-exclude |
определяет через запятую набор шаблонов для тех файлов, которые следует исключить из загрузки |
asp-fallback-src-include |
определяет через запятую набор шаблонов файлов, которые подключаются в том случае, если загрузка основного скрипта из атрибута src прошла неудачно |
asp-fallback-src-exclude |
определяет через запятую набор шаблонов файлов, которые следует исключить из загрузки в том случае, если загрузка основного скрипта из атрибута src прошла неудачно |
По сути, как было сказано выше, действие этих атрибутов аналогично действиям атрибутов LinkTagHelper поэтому, рассматривать их не имеет особого смысла.
EnvironmentTagHelper
Tag-хэлпер EnvironmentTagHelper позволяет генерировать определенную html-разметку в зависимости от состояния приложения. Состояние приложения определяется с использованием среды окружения ASPNETCORE_ENVIRONMENT. Ключевой атрибут этого хэлпера — names позволяет установить названия состояний среды, при которых применяется данный тег. Например,
<footer class="border-top footer text-muted">
<environment names="Production">
<div class="container">
© 2023 - AspTagHelpers - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</div>
</environment>
<environment names="Development">
<div class="container">
<p>Приложение находится в стадии разработки</p>
</div>
</environment>
</footer>
Здесь, в зависимости от имени среды окружения в футер сайта будет выводится различная информация. Если имя среды окружения Development:
Если имя среды окружения Production:
Имя среды окружения можно менять различными способами, например, с использованием файла launchSettings.json.
Итого
Tag-хэлперы LinkTagHelper, ScriptTagHelper и EnvironmentTagHelper используются, в основном, в макетах приложений. LinkTagHelper и ScriptTagHelper используются для загрузки файлов стилей и скриптов. Tag-хэлпер EnvironmentTagHelper используется для генерации определенной html-разметки в зависимости от того, в какой стадии находится приложение (Development, Production и т.д.)

