2010-03-02 2 views
0

У меня главная страница, в нижней части которой у меня есть такое меню:Поймайте имя методы контроллера

<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.

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

+0

i использовать asp.net mvc – kusanagi

ответ

1

В приложении 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 /> тега.

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

+0

очень трудное решение. я думаю, это будет так:

  • class = "active" <%}%>>Магазин фасадов
  • kusanagi

    +0

    Да. Вот почему я делаю это, как я объяснил. Чтобы избежать утверждений. Но если вы хотите написать инструкции if, то это: ViewContext.RouteData.GetRequiredString («действие») (как я объяснил в конце моего ответа) будет содержать имя действия, которое вы выполняете. –

    Смежные вопросы