我创建了一个Tag Helper,它读取包含元标记的txt文件并将内容写入页面。 但是在执行Process之后,原始标记不会更改。 我想用txt文件的内容完全替换原始标记。
标记助手
[HtmlTargetElement("LC_meta")]
public class MetaTagHelper : TagHelper
{
private IHostingEnvironment _env;
[HtmlAttributeName("filename")]
public string Filename { get; set; } = "default.txt";
public MetaTagHelper(IHostingEnvironment env)
{
_env = env;
}
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.Content.SetContent(System.IO.File.ReadAllText(System.IO.Path.Combine(_env.WebRootPath, "META", this.Filename)));
}
}
,这是原始代码:
<LC_meta />
<LC_meta filename="sample.txt" />
我有点卡住了,非常感谢提前!
答案 0 :(得分:9)
如果要省略标记,则只需将标记名设置为NULL并写入文本:
0
或者如果要更改标记名称,请将标记名设置为其他内容:
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = null;
output.TagMode = TagMode.StartTagAndEndTag;
output.PostContent.SetContent("<h1>this gets HTML encoded<h1>");
output.PostContent.SetHtmlContent("<h1>Hello World</h1>");
}
另外,请确保您的cshtml文件包含
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "pre";
output.TagMode = TagMode.StartTagAndEndTag;
output.PostContent.SetContent("<h1>this gets HTML encoded<h1>");
output.PostContent.SetHtmlContent("<h1>Hello World</h1>");
}
在开头(布局之前),例如
@addTagHelper *, ASSEMBLY_NAME_OF_CLASS_WITH_TAGHELPER