Выделение строки меню в ASP.NET Веб-приложение

#c# #asp.net #menubar

#c# #asp.net #строка меню

Вопрос:

Я создал веб-приложение, используя ASP.NET Visual Studio 2010 с основными страницами. Как вы увидите, проект предоставляет нам элемент строки меню по умолчанию. У меня есть 5 страниц (ссылок), перечисленных в этих строках меню. Теперь, когда пользователь переходит на определенную страницу, я хочу выделить ссылку на эту строку меню. Я не знаю, как это сделать: (

Я попробовал это в коде главной страницы, но это тоже не сработало:

  foreach (MenuItem item in NavigationMenu.Items)
        {
            var navigateUrlParams = item.NavigateUrl.Split('/');
            if (Request.Url.AbsoluteUri.IndexOf(navigateUrlParams[navigateUrlParams.Length - 1]) != -1)
            {
                item.Selected = true;
            }
        }
  

И в моем представлении разметки у меня есть это:

  <div class="clear hideSkiplink">
            <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal"  OnMenuItemClick="NavigationMenu_MenuItemClick">
                <Items>
                    <asp:MenuItem Text="Test1"/>
                     <asp:MenuItem Text="Test2"/>
                     <asp:MenuItem  Text="Test3"/>

                </Items>
            </asp:Menu>
        </div>
  

Итак, в принципе, всякий раз, когда пользователь заходит на страницу Test1.aspx, я хочу, чтобы пункт меню Test1 был выделен. Как я должен это сделать?

Любая помощь будет оценена! Спасибо…

Ответ №1:

Используйте классы ссылок CSS для реализации этого:

http://www.w3schools.com/css/sel_active.asp

И если вам «не нужно» делать что-то программное для этих элементов ссылок, используйте вместо этого привязочные ссылки HTML. Создайте их как элементы списка:

 <ul class="menu">
    <li>
        <a href="~/Home" id="link1" title="First Link" runat="server">Link 1</a>
    </li>
</ul>
  

Я хочу спросить, нужны ли здесь элементы управления (не знакомые с вашим проектом), и по возможности упростить разметку.

Ответ №2:

Сначала убедитесь, что все ваши пункты меню имеют свойство Id

В коде вашей главной страницы, находящемся позади обработчика загрузки страницы, сделайте что-то вроде этого

 if (!Page.IsPostBack)
{
      if(Page is Default)
           liHome.Attributes["class"]  = " active";

}
  

В этом примере вы должны проверить «тип» просматриваемой в данный момент страницы и добавить атрибут «к классу» для текущей ссылки, по которой осуществляется переход. вы могли бы определить свойство css для active что-то вроде

 .active
{
    background-color: Red;
}