2011-05-16 40 views
0

我是一個前端開發人員,與看似無能的.NET開發人員合作,似乎無法解決爲什麼ASP菜單控件不顯示選定的菜單項。 .NET開發人員向我發送了以下代碼。是否有一些規則缺失,需要啓用CSS?爲什麼沒有爲ASP菜單控件設置「選定」類?

在此先感謝

控制器配置

<asp:Menu ID="mnuMaster" 
          runat="server" 
          DataSourceID="sitemapMaster" 
          StaticDisplayLevels="1" 
          MaximumDynamicDisplayLevels="0" 
          Orientation="Horizontal" 
          StaticEnableDefaultPopOutImage="False" 
          CssSelectorClass="TopMainMenu" onmenuitemdatabound="mnuMaster_MenuItemDataBound" 
          StaticBottomSeparatorImageUrl="~/App_Themes/PCTools/Images/top_menu_separator.gif" 
          ></asp:Menu> 

CSS選擇類

.TopMainMenu .AspNet-Menu li a:active, .TopMainMenu li.AspNet-Menu-Selected a,.TopMainMenu li.AspNet-Menu-ChildSelected a,.TopMainMenu li.AspNet-Menu-ParentSelected a { 
    background:url(Images/navbg.gif) repeat-x 0 -86px; 
} 
+0

您是不是指您正在設置特定的css屬性/目前導航頁面上的課程? – 2011-05-16 13:44:53

+0

嗨,是啊所以即時風格.AspNet菜單 - 我選擇的等等,我認爲是什麼控制添加到選定的菜單項,但我的風格arent顯示和當我查看頁面的源它不出現控件將類添加到選定的項目 – htmlr 2011-05-16 13:48:37

+0

我認爲菜單控件在進入子項目或懸停時考慮選擇您點擊的那個。林不是100%肯定我會發布回答我通常如何突出顯示當前導航標籤 – 2011-05-16 20:17:38

回答

0

我們通常使用普通的HTML標準UL組設計人員提供再使他們成爲HTML服務器標籤。

可能還有其他解決方案,但我們通常所做的解決方案就是這樣。

首先,每個頂級菜單項都需要一個ID。

如果菜單上的母版(即時通訊將假設它是)

在母版後面的代碼,你可以把這樣的代碼。

//Discover currently navigated page TYPE 
if (this.Page is `pagetype of the current page`) 
    //add a CSS class to the top level menu item 
    miFirstMenuItem.Attributes["class"] += " highlightedMenuItemCSSClass"; 

然後HTML輸出將追加額外的CSS類要應用特定的風格,菜單項

繼承人現實生活中的例子 節點,你將不得不改變在SetActiveTab方法的類型正確類型的菜單項

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      bool homeVisited  = Page is Default; 
      bool productsVisited = Page is Products_List; 
      bool demoVisited  = Page is Demonstrations; 
      bool contactVisited  = Page is Contact; 

      if (homeVisited) 
       SetActivePage(hlHome, ButtonSide.Left); 
      if (productsVisited) 
       SetActivePage(hlProducts, ButtonSide.Middle); 
      if (demoVisited) 
       SetActivePage(hlDemo, ButtonSide.Middle); 
      if (contactVisited) 
       SetActivePage(hlContact, ButtonSide.Right); 

     } 
    } 

這表明比我上述不同的方法,但可以用link.Attributes [「類」] + =「的CssClass」替換它;注意第一」之後的空間。

而且ButtonSide是我,因爲所有的中間的菜單項中添加將具有相同的CSS類在我的具體情況和左右兩個以及一個枚舉。

private void SetActivePage(HyperLink link, ButtonSide side) 
    { 
     if (side == ButtonSide.Left) 
      link.CssClass = "currentleft"; 
     if (side == ButtonSide.Middle) 
      link.CssClass = "currentmiddle"; 
     if (side == ButtonSide.Right) 
      link.CssClass = "currentright"; 
    } 
+0

嗨latr0dectus,感謝您與代碼片段的努力,但我相信我們被限制使用ASP菜單控制器。你有沒有經歷過使用這個控制器,並知道問題可能是什麼? – htmlr 2011-05-17 13:02:01

0

有似乎是VS201/.Net4中的錯誤,其中您在asp.menu屬性中指定的CSS類名稱StaticSelectedStyle & DynamicSelectedStyle將被忽略。菜單始終使用類名「selected」。

相關問題