Я работаю над веб-приложением, использующим ASP.NET 3.5 и C #. Конструктивно у меня есть главная страница с элементом управления меню. Элемент управления служит моей навигацией и получает свои элементы из элемента управления SiteMapDataSource и соответствующего файла Web.sitemap.
Проблема в том, что некоторые стили не отображаются должным образом при указании свойства 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.
Если я укажу стили в xp asp.net примерно так:
<asp:Menu
ID="navMenu"
Orientation="Horizontal"
runat="server">
<StaticSelectedStyle
BackColor="Green"
Font-Underline="True"
Font-Bold="True" />
<StaticHoverStyle
BackColor="Gray" />
</asp:Menu>
Кажется, он работает правильно в Firefox, но этот стиль никогда не включается в HTML в Internet Explorer. Одд.
Есть ли у кого-нибудь понимание того, что вызывает эту проблему и как аккуратно обойти ее? Я знаю, что мог бы программно определить текущую страницу и выбрать соответствующий пункт меню вручную, чтобы он получил правильный класс стилей, но прежде чем я прибегну к совместному взлому C # и Javascript, чтобы исправить эту функциональность, я открыт для идей .