自定义标签助手 - 替换 html 标签

2024-01-12

我创建了一个标签帮助程序,它读取包含元标签的 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" />

我有点卡住了,非常感谢!


如果你想省略标签,只需将标签名设置为 NULL 并写入文本:

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>");
}

或者,如果您想更改标记名称,请将标记名称设置为其他名称:

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>");
}

另外,请确保您的 cshtml 文件包含

@addTagHelper *, ASSEMBLY_NAME_OF_CLASS_WITH_TAGHELPER

在开始时(布局之前),例如

@addTagHelper *, BlueMine
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义标签助手 - 替换 html 标签 的相关文章

随机推荐