【发布时间】:2012-07-04 19:06:33
【问题描述】:
我正在开发一个使用 ASP.NET 3.5 和 C# 的 Web 应用程序。在结构上,我有一个带有菜单控件的母版页。该控件用作我的导航,它从 SiteMapDataSource 控件和相应的 Web.sitemap 文件中获取其项目。
问题是当您指定 CssClass 属性时,某些样式无法正确呈现。更具体地说, selected 和 hover 样式不响应 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 来修复此功能之前,我愿意接受想法.
【问题讨论】:
标签: c# asp.net navigation master-pages