带通配符 HtmlTargetElement 的 TagHelper,这可能吗?

TagHelper with Wildcard HtmlTargetElement, is this possible?

我已经为 Bootstrap 工具提示编写了一个简单的 TagHelper:

[HtmlTargetElement("button", Attributes = "tooltip")]
public class TooltipTagHelper : TagHelper
{
    public string Tooltip { get; set; }

    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        if (string.IsNullOrWhiteSpace(Tooltip))
        {
            return;
        }

        output.Attributes.Add("data-toggle", "tooltip");
        output.Attributes.Add("data-original-title", Tooltip);
    }
}

目前我已经通过 HtmlTargetElementAttributebutton 元素激活了它。因为我想要,如果 tooltip 属性存在,这个 taghelper 在任何元素上处理,我尝试设置一个通配符:

[HtmlTargetElement("*", Attributes = "tooltip")]

这似乎不起作用,例如,当我在任何元素上键入 tooltip 时,我没有得到语法突出显示。

是否可以通过某种方式使 TagHelper 在所有标签上工作而无需为每个可能的标签重复 HtmlTargetElementAttribute

事实证明,它正是这样工作的:

[HtmlTargetElement("*", Attributes = "tooltip")]

但是 Intellisense 不够智能,无法识别它。生成的页面具有分配给它的两个属性。

我通过在调试模式下添加额外的目标元素来解决问题,因为 Intellisense 对我来说非常重要。

#if DEBUG
    [HtmlTargetElement("button", Attributes = "tooltip")]
#endif
    [HtmlTargetElement("*", Attributes = "tooltip")]