标记帮助程序添加了类,但在最终的HTML中被省略了

时间:2018-07-12 21:26:23

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

我正在编写一个TagHelper,该标签旨在在当前URL与active标签指向的URL匹配时,将a引导类添加到a标签中。想法是在导航栏中突出显示当前页面的链接。

下面是TagHelper(为简明起见,简称)的代码

[HtmlTargetElement("a", Attributes = "active-route")]
public class ActiveRouteTagHelper : TagHelper
{
    [HtmlAttributeName("active-route")]
    public bool ActiveRoute { get; set; }

    // [...]

    public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
    {
        // [...]

        var classes = output.Attributes.FirstOrDefault(at => at.Name == "class")?.Value;
        output.Attributes.SetAttribute("class", $"active {classes}");        
    }
}

这是active-route助手的用法示例

<a asp-controller="Account" asp-action="Login" active-route class="nav-item nav-link">Go to account page</a>

使用调试器,确保代码正确地将active类添加到a标记中,但是最终呈现的HTML没有。 Free hand proof that the class is added

为什么在正确添加标记的过程中active类会被省略?我找不到有关AnchorTagHelper与我自己的假设冲突的任何信息...

0 个答案:

没有答案