我正在开发.NET Core应用程序。我有一个带有一些链接的侧边栏。当我点击特定链接时,我想将<li class="active ">
<a href="home/index">
<i class="material-icons">home</i>
<span class="title">Home</span>
</a>
</li>
CSS类应用于其列表项。
<sidebarlink controller="home" action="index" icon="home"></sidebarlink>
我使用.NET Framework 4.6中的Html Helpers来实现这一点,但我不知道如何在.NET Core中执行此操作。我希望标签助手的最终结果如下所示:
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);
}
}
根据我在.NET Framework 4.6中所做的,我已经尝试了但是我无法让它为新的Tag Helpers工作。
active
我不知道如何检查并查看我是否在匹配传递的Controller和Action的路线上,以便我可以应用pacman -S msys/libcrypt-devel
类。
答案 0 :(得分:2)
将以下属性添加到标记助手:
[HtmlAttributeNotBound]
[ViewContext]
public ViewContext ViewContext { get; set; }
然后,您可以通过以下方式获取当前的控制器/操作:
var controller = ViewContext.RouteData.Values["controller"]
var action = ViewContext.RouteData.Values["action"]