Jquery 无法更改当前的css类<;导航>;
我的asp.net MVC核心web应用程序中有以下Jquery 无法更改当前的css类<;导航>;,jquery,css,asp.net,asp.net-core,asp.net-core-mvc,Jquery,Css,Asp.net,Asp.net Core,Asp.net Core Mvc,我的asp.net MVC核心web应用程序中有以下:- <nav> <ul id="navigation"> <li class="@Html.IsSelected(actions: "Home", controllers: "Default")"><a href="/">home</a></li> <
:-
<nav>
<ul id="navigation">
<li class="@Html.IsSelected(actions: "Home", controllers: "Default")"><a href="/">home</a></li>
<li class="@Html.IsSelected(actions: "FAQ", controllers: "Default")"><a href="/home/FAQ">FAQ</a></li>
<li class="@Html.IsSelected(actions: "Contact", controllers: "Default")"><a href="/home/contact/">Contact</a></li>
</ul>
</nav>
我想更改当前链接的类,我定义了以下html扩展方法:-
public static class HtmlHelperExtensions
{
public static string IsSelected(this IHtmlHelper htmlHelper, string controllers, string actions, string cssClass = "selected")
{
string currentAction = htmlHelper.ViewContext.RouteData.Values["action"] as string;
string currentController = htmlHelper.ViewContext.RouteData.Values["controller"] as string;
IEnumerable<string> acceptedActions = (actions ?? currentAction).Split(',');
IEnumerable<string> acceptedControllers = (controllers ?? currentController).Split(',');
return acceptedActions.Contains(currentAction) && acceptedControllers.Contains(currentController) ?
cssClass : String.Empty;
}
}
公共静态类HtmlHelperExtensions
{
已选择公共静态字符串(此IHtmlHelper htmlHelper、字符串控制器、字符串操作、字符串cssClass=“已选择”)
{
字符串currentAction=htmlHelper.ViewContext.RoutedData.Values[“action”]作为字符串;
字符串currentController=htmlHelper.ViewContext.RoutedData.Values[“controller”]作为字符串;
IEnumerable acceptedActions=(actions??currentAction).Split(',');
IEnumerable AcceptedController=(控制器??currentController).Split(',');
返回acceptedActions.Contains(currentAction)和&AcceptedController.Contains(currentController)?
cssClass:String.Empty;
}
}
但是当我点击任何
链接时,它们都没有得到任何特效!有什么建议吗
感谢调试以检查IsSelected方法是否返回cssClass。从代码中,当当前url为以下url之一时,它将仅返回cssClass:
- /默认/主
- /默认/常见问题解答
- /默认/联系方式
标记
似乎没有一个内置的选定的csc类,您需要在某个地方定义它
我根据您的代码进行了测试,只需更改颜色:
在_Layout.cshtml中
<nav>
<ul id="navigation">
<li style="@Html.IsSelected(actions: "Index", controllers: "Home")"><a href="/">Home</a></li>
<li style="@Html.IsSelected(actions: "FAQ", controllers: "Home")"><a href="/home/FAQ">FAQ</a></li>
<li style="@Html.IsSelected(actions: "Contact", controllers: "Home")"><a href="/home/contact/">Contact</a></li>
</ul>
</nav>
Html扩展名:
public static class HtmlHelperExtensions
{
public static string IsSelected(this IHtmlHelper htmlHelper, string controllers, string actions, string cssClass = "color:red")
{
string currentAction = htmlHelper.ViewContext.RouteData.Values["action"] as string;
string currentController = htmlHelper.ViewContext.RouteData.Values["controller"] as string;
IEnumerable<string> acceptedActions = (actions ?? currentAction).Split(',');
IEnumerable<string> acceptedControllers = (controllers ?? currentController).Split(',');
return acceptedActions.Contains(currentAction) && acceptedControllers.Contains(currentController) ?
cssClass : String.Empty;
}
}
公共静态类HtmlHelperExtensions
{
选择公共静态字符串(此IHtmlHelper htmlHelper、字符串控制器、字符串操作、字符串cssClass=“color:red”)
{
字符串currentAction=htmlHelper.ViewContext.RoutedData.Values[“action”]作为字符串;
字符串currentController=htmlHelper.ViewContext.RoutedData.Values[“controller”]作为字符串;
IEnumerable acceptedActions=(actions??currentAction).Split(',');
IEnumerable AcceptedController=(控制器??currentController).Split(',');
返回acceptedActions.Contains(currentAction)和&AcceptedController.Contains(currentController)?
cssClass:String.Empty;
}
}
结果: