Где легко хранить HTML-контент для вспомогательного тега? - PullRequest
0 голосов
/ 08 июля 2019

У меня есть следующий пользовательский тег helper

public class PageHeaderTagHelper : TagHelper
{
    public string HeaderContent { get; set; }

    private string Template { get; set; } = $@"<h2 class='pageheader-title'>{{0}}</h2>";

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        output.TagName = "div";
        output.Attributes.SetAttribute("class", "page-header");

        output.Content.AppendHtml(string.Format(Template, HeaderContent));

    }
}

Иногда дело в том, что Template может быть довольно большим, и хранение его содержимого в строковой переменной не является наиболее удобным (удобочитаемость, двойные кавычки, которые необходимо преобразовать в одинарные кавычки и т. Д.)

Я подумал об использовании файла ресурсов и вставке в него HTML-кода, это немного лучше.

Но есть ли способ просто вставить разметку HTML в отдельный физический файл, чтобы она была легко читаемой и редактируемой и использовалась из помощника по тегам?

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Вы можете сохранить HTML-код на html-странице в папке wwwroot, например wwwroot/mypage.html:

<h2 class="pageheader-title">Hello World</h2>

В TageHelper вы можете получить его, используя:

public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
    var Template = await File.ReadAllTextAsync("wwwroot/mypage.html");
    output.Content.SetHtmlContent(Template);
}

См.https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/th-components?view=aspnetcore-2.2#inject-into-html-body-element

0 голосов
/ 08 июля 2019

Я бы посоветовал вам хранить ваш HTML в невидимом теге.Создайте div и скройте его.При таком подходе ваши HTML-шаблоны могут быть легко запрошены с помощью JavaScript.Вы также можете отделить ваши HTML-шаблоны в другом файле без тегов doctype и body и встроить их в основной документ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...