我正在编写一个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没有。
为什么在正确添加标记的过程中active
类会被省略?我找不到有关AnchorTagHelper
与我自己的假设冲突的任何信息...