我刚刚注意到,如果我有2个标签助手针对相同的元素,都可以执行。它们的执行顺序取决于它们在_ViewImports.cshtml中的注册顺序。多标签助手瞄准相同的元素
例如,我可以为锚元素创建另一个标签帮手:
[HtmlTargetElement("a", Attributes = "foo")]
public class FooTagHelper : TagHelper
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
//Get the url from href attribute generated in the default AnchorTagHelper
var url = output.Attributes["href"].Value.ToString();
...
}
}
如下使用它(请注意,我还添加默认的锚帮手像asp-controller
的属性):
<a class="menu" asp-controller="Home" asp-action="Index" foo>Foo</a>
如果此帮手在_ViewImports.cshtml 中注册后默认ASP:
- 每当调用
Process
时,TagHelperOutput
已经包含由默认AnchorTagHelper
生成的href。我也可以用任何我喜欢的方式更新默认标签助手生成的锚点。
对此行为有任何控制吗?
您可能需要决定是否要执行进一步佣工针对同一元素(好像密封你的输出)。您可能还想要允许其他助手,但确保某些属性未被修改。
这实际上应该是[HtmlTargetElement(“a”,Attributes =“foo”)] –
感谢您指出这一点,老问题从beta天! –