Я чувствую вашу боль, и я потратил впустую всю ночь / утро, пытаясь понять это.
С помощью грубой силы я нашел решение. Назовите это обходным путем - но это просто.
Добавьте свойство CssClass в объявление вашего элемента управления меню, например:
<asp:Menu ID="NavigationMenu" DataSourceID="NavigationSiteMapDataSource"
CssClass="SomeMenuClass"
StaticMenuStyle-CssClass="StaticMenuStyle"
StaticMenuItemStyle-CssClass="StaticMenuItemStyle"
Orientation="Horizontal"
MaximumDynamicDisplayLevels="0"
runat="server">
</asp:Menu>
Просто извлеките атрибуты StaticSelectedStyle-CssClass и StaticHoverStyle-CssClass, так как они просто не используют jack.
Теперь создайте SomeMenuClass, независимо от того, что вы в него вставили. Это должно выглядеть примерно так:
.SomeMenuClass
{
color:Green;
}
Затем добавьте следующие два CSS-класса:
Для стиля "Hover" добавить:
.SomeMenuClass a.static.highlighted
{
color:Red !important;
}
Для стиля «Выбранный» добавить:
.SomeMenuClass a.static.selected
{
color:Blue !important;
}
Вот и все. Вы сделали Надеюсь, это спасет некоторых из вас от разочарования, которое я пережил. Кстати: вы упомянули:
Кажется, я первый
сообщить о том, что кажется ошибкой.
Вы также, похоже, думаете, что это новая ошибка .NET 4.0. Я нашел это:
http://www.velocityreviews.com/forums/t649530-problem-with-staticselectedstyle-and-statichoverstyle.html
опубликовано еще в 2008 году относительно Asp.Net 2.0. Как мы, единственные 3 человека на планете, жалуемся на это?
Как я нашел обходной путь (изучите вывод HTML):
Вот вывод HTML, когда я устанавливаю StaticHoverStyle-BackColor = "Red":
#NavigationMenu a.static.highlighted
{
background-color:Red;
}
Это вывод HTML при установке StaticSelectedStyle-BackColor = "Blue":
#NavigationMenu a.static.selected
{
background-color:Blue;
text-decoration:none;
}
Поэтому логичным способом переопределения этой разметки было создание классов для SomeMenuClass a.static.highlighted и SomeMenuClass a.static.selected
Специальные примечания:
Вы ДОЛЖНЫ также использовать «! Important » на ВСЕХ настройках этих классов, потому что в выводе HTML используется « # NavigationMenu », а это означает, что любые стили, которые Asp.Net решает добавьте туда, чтобы у вас был приоритет наследования над любыми другими стилями элемента управления меню с идентификатором " NavigationMenu ". Одна вещь, с которой я боролась, - это заполнение, пока я не выяснил, что Asp.Net использует « # NavigationMenu » для установки левого и правого заполнения на 15em. Я добавил «! Important » к моим SomeMenuClass стилям, и это сработало.