我正在使用ASP.NET 3.5和C#的Web應用程序。在結構上,我有一個主菜單頁面,上面有一個菜單控件。該控件用作我的導航,它從SiteMapDataSource控件和相應的Web.sitemap文件中獲取它的項目。Master Page中的菜單控件無法使用CSS樣式
問題是某些樣式在指定CssClass屬性時無法正確呈現。更具體地說,所選和懸停樣式不響應CSS樣式。考慮下面的代碼:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="Site" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>A webpage</title>
</head>
<body>
<form id="form1" runat="server">
<div id="page">
<asp:Menu
ID="navMenu"
Orientation="Horizontal"
StaticMenuStyle-CssClass="staticMenu"
StaticMenuItemStyle-CssClass="staticMenuItem"
StaticSelectedStyle-CssClass="staticSelectedItem"
StaticHoverStyle-CssClass="staticHoverItem"
runat="server">
</asp:Menu>
<asp:SiteMapDataSource ID="srcSiteMap" runat="server" ShowStartingNode="false" />
<br />
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
假設我有以下相應的.css文件:
.staticMenuItem { background-color:Red; }
.staticSelectedItem { background-color:Green; }
.staticHoverItem { background-color:Blue; }
會發生什麼事是我的項目的背景將正確是紅色的,但我選擇的項目不會是綠色的,我懸停在我的鼠標上的項目不會是藍色的。無論我是否將樣式包含在母版頁的頭部,或者在web.config文件中指定的默認主題的外部文件中,這似乎都是真的。
如果我指定像這樣在asp.net XML的樣式:
<asp:Menu
ID="navMenu"
Orientation="Horizontal"
runat="server">
<StaticSelectedStyle
BackColor="Green"
Font-Underline="True"
Font-Bold="True" />
<StaticHoverStyle
BackColor="Gray" />
</asp:Menu>
這似乎是在Firefox正常工作,但款式永遠不會嵌入在Internet Explorer中的HTML。奇。
有沒有人有任何洞察到是什麼導致這個問題,以及如何整齊地解決它?我知道我可能會編程地確定當前頁面並手動選擇相應的菜單項,以便它接收到正確的樣式類,但在我使用C#和Javascript一起修復此功能之前,我會接受想法。
更奇怪的是,我有這個問題,但只在我的生產環境 - 兩個環境都有.NET 4,但生產使用IIS7 - 這是唯一的區別,我可以制定!不錯的答案,但我會把它設置爲「表」,看看是否修復它 – 2011-02-16 20:33:53