我有以下自定义标签帮助程序
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标记粘贴到单独的物理文件中,使其易于从标记帮助程序中读取,编辑和使用?
答案 0 :(得分:1)
您可以将HTML代码保存在wwwroot文件夹中的HTML页面中,例如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);
}
答案 1 :(得分:0)
我建议您将HTML存储在不可见的标记中。创建一个div并将其隐藏。使用这种方法,JavaScript可以轻松查询HTML模板。您还可以将HTML模板分离到另一个文件中,而无需使用doctype或body标签,并将其嵌入到主文档中。