从另一个TagHelper调用TagHelpers?

时间:2015-09-21 10:04:23

标签: razor asp.net-core tag-helpers

有没有办法让TagHelper呈现另一个TagHelper?

TagHelpers示例;

public class OuterTagHelper : TagHelper
{
    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        output.TagName = "";
        output.Content.SetContent("Hello <inner></inner>");
    }
}

public class InnerTagHelper : TagHelper
{
    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        output.TagName = "";
        output.Content.SetContent("World!");
    }
}

示例视图;

<outer></outer>

预期结果;

Hello World!

我知道我可能应该使用ViewComponent,但是它是否可以实现上面提到的预期行为?

2 个答案:

答案 0 :(得分:3)

如果您需要使用某些现有的标记帮助程序类型功能,则可以从IHtmlGenerator访问它。这无助于访问自定义标记帮助程序功能,但如果您只需要标签,输入等现有内容的功能,那么这将起作用

'Points'

答案 1 :(得分:0)

@Daniel J.G.是对的,不建议这样做。从技术上讲,如果您通过高度自定义的剃刀解析器运行内容然后执行内容就好像它是一个页面一样,您可以这样做 - 但这几乎肯定是解决问题的错误方法。