带通配符 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);
}
}
目前我已经通过 HtmlTargetElementAttribute
为 button
元素激活了它。因为我想要,如果 tooltip
属性存在,这个 taghelper 在任何元素上处理,我尝试设置一个通配符:
[HtmlTargetElement("*", Attributes = "tooltip")]
这似乎不起作用,例如,当我在任何元素上键入 tooltip
时,我没有得到语法突出显示。
是否可以通过某种方式使 TagHelper 在所有标签上工作而无需为每个可能的标签重复 HtmlTargetElementAttribute
?
事实证明,它正是这样工作的:
[HtmlTargetElement("*", Attributes = "tooltip")]
但是 Intellisense 不够智能,无法识别它。生成的页面具有分配给它的两个属性。
我通过在调试模式下添加额外的目标元素来解决问题,因为 Intellisense 对我来说非常重要。
#if DEBUG
[HtmlTargetElement("button", Attributes = "tooltip")]
#endif
[HtmlTargetElement("*", Attributes = "tooltip")]
我已经为 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);
}
}
目前我已经通过 HtmlTargetElementAttribute
为 button
元素激活了它。因为我想要,如果 tooltip
属性存在,这个 taghelper 在任何元素上处理,我尝试设置一个通配符:
[HtmlTargetElement("*", Attributes = "tooltip")]
这似乎不起作用,例如,当我在任何元素上键入 tooltip
时,我没有得到语法突出显示。
是否可以通过某种方式使 TagHelper 在所有标签上工作而无需为每个可能的标签重复 HtmlTargetElementAttribute
?
事实证明,它正是这样工作的:
[HtmlTargetElement("*", Attributes = "tooltip")]
但是 Intellisense 不够智能,无法识别它。生成的页面具有分配给它的两个属性。
我通过在调试模式下添加额外的目标元素来解决问题,因为 Intellisense 对我来说非常重要。
#if DEBUG
[HtmlTargetElement("button", Attributes = "tooltip")]
#endif
[HtmlTargetElement("*", Attributes = "tooltip")]