Razor 了解用户在.NET Core中的TagHelper内的路由
我正在开发一个.NET核心应用程序。我有一个带有一些链接的侧边栏。当我点击一个特定的链接时,我想将Razor 了解用户在.NET Core中的TagHelper内的路由,razor,asp.net-core,Razor,Asp.net Core,我正在开发一个.NET核心应用程序。我有一个带有一些链接的侧边栏。当我点击一个特定的链接时,我想将activeCSS类应用于它的列表项 <li class="active "> <a href="home/index"> <i class="material-icons">home</i> <span class="title">Home</span> </a> </li>
active
CSS类应用于它的列表项
<li class="active ">
<a href="home/index">
<i class="material-icons">home</i>
<span class="title">Home</span>
</a>
</li>
我曾经能够在.NETFramework4.6中使用Html帮助程序实现这一点,但我不知道如何在.NETCore中实现这一点。我希望标记辅助对象的最终结果如下所示:
<sidebarlink controller="home" action="index" icon="home"></sidebarlink>
基于我在.NETFramework4.6中所做的工作,我做了一次尝试,但我无法让它为新的标记帮助程序工作
public class SidebarLink : TagHelper
{
private const string ActiveClass = "active";
public string Controller { get; set; }
public string Action { get; set; }
public string Icon { get; set; }
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "li";
var content = await output.GetChildContentAsync();
content.SetHtmlContent($@"<a href=\"/Controller/Action\"><i class=\"material-icons\">Icon</i><span class=\"title\">Suppliers</span></a>"); // this doesn't work, something is up with the syntax
// only if I am on the route for the passed controller and action
// not sure how to check
output.Attributes.SetAttribute("class", ActiveClass);
}
}
public类侧边栏链接:TagHelper
{
私有常量字符串ActiveClass=“active”;
公共字符串控制器{get;set;}
公共字符串操作{get;set;}
公共字符串图标{get;set;}
公共重写异步任务ProcessAsync(TagHelperContext上下文,TagHelperOutput输出)
{
output.TagName=“li”;
var content=await output.GetChildContentAsync();
content.SetHtmlContent($@“”);//这不起作用,语法有问题
//仅当我在传递控制器和操作的路线上时
//不知道怎么查
output.Attributes.SetAttribute(“类”,ActiveClass);
}
}
我不知道如何检查并查看我是否在与传递的控制器和操作匹配的路线上,以便可以应用
活动类。将以下属性添加到标记帮助器:
[HtmlAttributeNotBound]
[ViewContext]
public ViewContext ViewContext { get; set; }
然后,您可以通过以下方式获取当前控制器/操作:
var controller = ViewContext.RouteData.Values["controller"]
var action = ViewContext.RouteData.Values["action"]