【问题标题】:How to get the URL of the actual view from a partial view in the layout如何从布局中的部分视图中获取实际视图的 URL
【发布时间】: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


【解决方案1】:

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

string[] route= url.RequestContext.HttpContext.Request.FilePath.Split('/');
            string currentController = route[1];
            string currentAction = route[2];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 2012-08-05
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多