Как получить URL фактического представления из частичного представления в макете - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь динамически добавить класс "active" к элементу nav в проекте 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, а не частичные значения представления?

Если вам нужна дополнительная информация, дайте мне знать.

1 Ответ

0 голосов
/ 29 апреля 2020

Я нашел способ добраться до значений. Для тех, кто борется с этим, это мое решение:

string[] route= url.RequestContext.HttpContext.Request.FilePath.Split('/');
            string currentController = route[1];
            string currentAction = route[2];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...