如何从布局的局部视图获取实际视图的URL

问题描述 投票:0回答:1

我正在尝试将“活动”类动态添加到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值?

如果您需要更多信息,请告诉我。

c# asp.net-mvc url
1个回答
0
投票

我找到了一种获取价值的方法。对于任何为此苦苦挣扎的人,这是我的解决方案:

string[] route= url.RequestContext.HttpContext.Request.FilePath.Split('/');
            string currentController = route[1];
            string currentAction = route[2];
© www.soinside.com 2019 - 2024. All rights reserved.