我正在尝试将“活动”类动态添加到ASP.NET MVC 5项目中的导航元素。浏览了一些答案后,我明白了。
C#:
namespace System.Web.Mvc
{
public static class MyExtensions
{
public static string IsLinkActive(this UrlHelper url, string action, string controller)
{
string currentController = url.RequestContext.RouteData.Values["controller"].ToString();
string currentAction = url.RequestContext.RouteData.Values["action"].ToString();
if (currentController == controller && currentAction == action)
{
return "active";
}
return "";
}
}
}
这是html代码的示例:
<li class="@Url.IsLinkActive(item.Method, item.Controller)"></li>
问题是,由于我使用IsLinkActive的菜单位于局部视图(从布局中调用,因此currentController和currentAction变量始终返回局部视图路线。
其想法是,如果item方法和控制器与实际页面相同,则'li'元素应获得活动类。
如何获得真实的url值,而不是部分视图的url值?
如果您需要更多信息,请告诉我。
我找到了一种获取价值的方法。对于任何为此苦苦挣扎的人,这是我的解决方案:
string[] route= url.RequestContext.HttpContext.Request.FilePath.Split('/');
string currentController = route[1];
string currentAction = route[2];