2011-08-22 153 views
4

我正在使用asp.net 4.0與C#並且最近爲我的本地web應用程序創建了一個自定義設計。我希望當一個頁面被選中時,它有不同的背景顏色(通常在純HTML + CSS中,我們只是將菜單項設置爲活動)。我嘗試使用,但它不工作,它保持與其他人相同的顏色。有沒有人有這方面的經驗?asp.NET - 選擇菜單的靜態選擇樣式的問題

代碼在網站站長:

  <h2>Dashboard</h2> 
      <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Vertical" > 
       <StaticSelectedStyle CssClass="selectedMenu" /> 
       <Items> 
        <asp:MenuItem NavigateUrl="~/Default.aspx" Text="View Submissions"/> 
        <asp:MenuItem NavigateUrl="~/Imports.aspx" Text="Import"/> 
        <asp:MenuItem NavigateUrl="~/Submission.aspx" Text="Insert Submission"/> 
        <asp:MenuItem NavigateUrl="~/Reports.aspx" Text="Reports"/> 
        <asp:MenuItem NavigateUrl="~/CurrencyMaintenance.aspx" Text="Currency Maintenance" /> 
        <asp:MenuItem NavigateUrl="~/Remittance.aspx" Text="Remittance" /> 
       </Items> 
      </asp:Menu> 

CSS:

/* TAB MENU 
----------------------------------------------------------*/ 
div.hideSkiplink 
{ 
    background-color:#3a4f63; 
    width:100%; 
} 

div.menu 
{ 
    padding: 4px 0px 4px 8px; 
} 

div.menu ul 
{ 
    list-style: none; 
    margin: 0px; 
    padding: 0px; 
    width: auto; 
} 

div.menu ul li a, div.menu ul li a:visited 
{ 
    background-color: #FFF; /*680840*/ 
    border: 1px #4e667d solid; 
    height: 20px; 
    width: 175px; 
    color: #000; /*FFF*/ 
    display: block; 
    line-height: 1.35em; 
    padding: 4px 20px; 
    text-decoration: none; 
    white-space: nowrap; 
} 

div.menu ul li a:hover 
{ 
    background-color: #680840; 
    color: #FFF; 
    text-decoration: none; 
} 

.selectedMenu 
{ 
    background-color: #680840 !important; 
    color: #FFF !important; 
    text-decoration: none !important; 
} 

div.menu ul li a:active 
{ 
    background-color: #680840; 
    color: #cfdbe6; 
    text-decoration: none; 
} 

這就是它看起來像在飛翔,我會選擇上喜歡類似的效果。

Menu

回答

23

這似乎是與.NET菜單中的錯誤。有關於這個here的一些信息。你可能想要做的就是刪除staticSelectedStyle屬性,只需添加到您的CSS:

.menu a.static.selected 
{ 
    background-color: #680840 !important; 
    color: #FFF !important; 
    text-decoration: none !important; 
} 

您可能還需要一些代碼添加到您主人的頁面加載,以確定哪些應該是這樣選擇的項目:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string path = Request.AppRelativeCurrentExecutionFilePath; 
    foreach (MenuItem item in NavigationMenu.Items) 
    { 
     item.Selected = item.NavigateUrl.Equals(path, StringComparison.InvariantCultureIgnoreCase); 
    } 
} 
+0

感謝隊友,是固定的吧,我一直在試圖解決這一問題了一段時間,你就:) –

+0

感謝它固定我的問題太專。 – saranya

+0

不錯,但路徑爲「〜/ xyz.aspx」時失敗。這個效果更好:item.Selected = item.NavigateUrl.Equals(Right(path,item.NavigateUrl.Length),StringComparison.InvariantCultureIgnoreCase) – smirkingman