Поймать метод имя контроллера - PullRequest
0 голосов
/ 02 марта 2010

У меня есть главная страница, внизу которой у меня есть такое меню:

<div class="footMenu">
    <ul>
        <li class="active"><a href="">test1</a> </li>
        <li><a href="">test2</a></li>
        <li><a href="">test3</a></li>               
    </ul>
</div>

В зависимости от загруженного представления мне нужно поставить class="active" перед текущим элементом li.

Как это можно сделать?

1 Ответ

1 голос
/ 02 марта 2010

В приложении asp.net mvc я обычно решаю эту проблему, устанавливая идентификатор тега body, который содержит как имя контроллера, так и имя действия. Затем я использую css для стилизации ссылок по-разному в зависимости от идентификатора тега body.

Обычно я делаю это, создавая вспомогательное расширение html, которое получает строку id для тега body. Это может выглядеть примерно так:

public static string BodyId(this HtmlHelper helper) {
    var controllerName = helper.ViewContext.RouteData.GetRequiredString("controller").ToLower();
    var actionName = helper.ViewContext.RouteData.GetRequiredString("action").ToLower();

    return string.Format("{0}-{1}", controllerName, actionName);
}

Тогда используйте это так:

<body id="<%=Html.BodyId()%>">

Тогда вы также можете указать идентификаторы всех своих ссылок. Чтобы было понятнее, они также могут содержать имя контроллера и имя действия, на которое они должны ссылаться. Примерно так:

<ul>
    <li><a href="" id="home-index-link">test1</a></li>
    <li><a href="" id="account-login-link">test2</a></li>       
</ul>

Затем я использую css для стилизации их по-разному, в зависимости от того, выбраны они или нет. Примерно так:

#home-index #home-index-link, #account-login #account-login-link {
    /* Styles for selected links */
}

Конечно, это будет работать, если вы сделаете то же самое для тега <li /> вместо тега <a />.

Если вы не хотите делать это таким образом, вы, конечно, можете просто использовать routedata (как я делаю в моем html помощнике здесь). Значение с ключом «action» будет содержать имя действия, а значение с ключом «controller» будет содержать имя контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...