【发布时间】:2020-04-29 16:21:17
【问题描述】:
我正在尝试将“活动”类动态添加到 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 变量总是返回局部视图路由。
想法是,如果项目方法和控制器与实际页面相同,则“li”元素应该获取活动类。
如何获取真实的 url 值,而不是部分视图的值?
如果您需要更多信息,请告诉我。
【问题讨论】:
-
用记事本打开网页,看看哪些属性有完整的url。
-
我在布局页面中使用 ViewContext.RouteData.Values["action"] 来了解控制器调用了哪个操作。
标签: c# asp.net-mvc url