2011-05-11 46 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; 
}