2011-05-11 69 views
3

我使用ASP.NET Visual Studio 2010和Master Pages構建了一個Web應用程序。你會看到該項目給我們一個默認的菜單欄項目。我在這些菜單欄上列出了5頁(鏈接)。現在,當用戶轉到特定頁面時,我想突出顯示菜單欄鏈接。我不知道該怎麼做:(突出顯示ASP.NET Web應用程序中的菜單欄

我想這對母版頁代碼隱藏,但它沒有工作過:

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的菜單項被高亮顯示。我應該怎麼辦呢?

任何幫助將不勝感激!謝謝...

回答

0

使用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> 

我想說的是問題,如果控制是必要的位置(不是你熟悉的項目),並可以保持標記簡單,每當。

0

首先確保你的菜單項都包含一個ID屬性

在你的母版頁的網頁加載處理後面的代碼做這樣的事情

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

} 

在這個例子中,你會檢查「鍵入「當前查看頁面,並將其附加到當前導航鏈接的類屬性。你可以定義一個css屬性來激活像

.active 
{ 
    background-color: Red; 
}