bhabatosh ojha Ответов: 4

Как отметить активное меню из кода позади в asp.net главная страница?


Я создал свое меню с помощью div и ul и хочу сделать их активными на основном имени страницы из кода позади, вот мой html.
----------------------------------------------------
<ul class="nav">
                            <li class="nav_a"><a class="nav_active" href="Index.aspx">Home</a></li>
                            <li class="nav_a">|</li>
                            <li class="nav_a"><a class="nav_a1" href="About.aspx">About Us</a></li>
                            <li class="nav_a">|</li>
                            <li class="nav_a"><a class="nav_a1" href="Services.aspx">Services</a></li>
                            <!--<li class="nav_a">|</li>
                            <li class="nav_a"><a class="nav_a1" href="fees.html">Fees</a></li>-->
                            <li class="nav_a">|</li>
                            <li class="nav_a"><a class="nav_a1" href="Contact_Us.aspx">Contact Us</a></li>
                            <asp:Literal ID="ltTopMenu" runat="server"></asp:Literal>
                        </ul>

4 Ответов

Рейтинг:
2

Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)

Ссылаться - Как выделить активную страницу в меню мастер-страницы?[^].

Цитата:
Есть много способов сделать это. Есть некоторые простые и некоторые уродливые хакерские:

Решение 1:
Используйте элемент управления меню. Стандартный элемент управления меню .NET имеет простое решение для этого. Это самое чистое и быстрое решение, на мой взгляд. Взгляните на это этот пост. Мэби, это поможет тебе, если ты выберешь это решение.

Решение 2:
Вы можете использовать какой-то javascript, чтобы выделить текущий элемент. jQuery сделает это проще, если вы не хотите писать все самостоятельно. Для этого решения взгляните на этот страница. Он устарел, но все еще эффективен.

Решение 3:
Это своего рода уродливое решение, и вы можете сделать это по-разному: Вы могли бы изменить <a> элементы управления гиперссылками и установка какого-либо сеанса или файла cookie при нажатии на них. Когда он установлен, вы можете изменить стиль в зависимости от значения файла cookie.

Есть еще больше способов решить эту проблему, но я думаю, что первые два решения помогут вам.

Для решения 3 вы можете обратиться ко второму сообщению - Выделение активной ссылки при использовании Masterpage[^].
Цитата:
Каждый элемент управления гиперссылкой имеет идентификатор. Оформите ссылку с этим идентификатором на странице.

Е. Г., на странице, ссылка на идентификатор элемента управления="HyperLink1", "создание стиля", что страница, которая дает#HyperLink1, скажем, жирным красным шрифтом. Повторите на других страницах, создавая стили на тех страницах, которые стилизуют идентификатор их гиперссылки.

Это не зависит от того, активна ли ссылка, а просто от того, на какой странице вы находитесь и какая ссылка в меню предназначена для этой страницы.


Рейтинг:
1

Raje_

Для выделения меню из кода позади сначала вам нужно изменить свой html-тег привязки на тег привязки на стороне сервера. Вы можете сделать это, добавив runat="server" атрибут для вашего якорного тега.

Напр. :-

<ul><li class="nav_a"><a class="nav_active" href="Index.aspx" id="href1" runat="server">Home</a></li></ul>


затем получите доступ к этому тегу привязки из кода позади и измените класс.

href1.Attributes.Add("class", "new-class");


перед этим создайте новый класс для подсветки меню.

Удачи.


Рейтинг:
0

Member 13743743

Как установить активный класс на текущую ссылку страницы, если ваше навигационное меню находится на главной странице ?

Предположим, что структура вашего меню такова, как показано ниже в файле (Master.aspx) :

<ul>    
     <li><a href="Dash.aspx">Dashboard</a></li>    
     <li><a href="Tests.aspx">Test</a></li>    
     <li><a href="Report.aspx">Report</a></li>    
</ul>



Начните с присвоения уникального идентификатора каждому элементу и добавьте ключ (runat="сервер") к каждому элементу. таким образом, ваша разметка будет выглядеть следующим образом

<ul>      
     <li id="dashlink" runat="server"><a href="Dash.aspx">Dashboard</a></li>      
     <li id="testslink" runat="server"><a href="Tests.aspx">Test</a></li>      
     <li id="reportlink" runat="server"><a href="Report.aspx">Report</a></li>      
</ul>



Наконец, в коде-behinde главной страницы добавьте следующее к функции (Page_load)

protected void Page_Load(object sender, EventArgs e)  
{  
  
    String activepage = Request.RawUrl;  
    if (activepage.Contains("Dash.aspx"))  
    {  
        dashlink.Attributes.Add("class", "active");  
    }  
    else if (activepage.Contains("Tests.aspx"))  
    {  
       testslink.Attributes.Add("class", "active");  
    }  
    else if (activepage.Contains("Report.aspx"))  
    {  
       reportlink.Attributes.Add("class", "active");  
    }  
  
}


Наслаждайтесь!


CHill60

Я сомневаюсь, что ОП понравится решение, которое появится через 4 с половиной года после того, как оно им понадобилось

easye77

Нет, но другие, которые ищут и ищут ответы, будут наслаждаться этим. Вы забыли, что другие люди, кроме ОП, тоже ищут решения? Пожалуйста, подумайте об этом в следующий раз, прежде чем отвечать и звучать как массивный придурок.