Я нахожусь в процессе моделирования меню asp.net, и я пытаюсь понять значение StaticSelectedStyle-CssClass и параметров StaticHoverStyle-CssClass.
Мое понимание - то, что стили, определенные с этими параметрами, применяются как классы CSS к соответствующим элементам, при необходимости. Таким образом, я создал свое меню следующим образом:
<asp:Menu ID="NavigationMenu" DataSourceID="NavigationSiteMapDataSource"
StaticMenuStyle-CssClass="StaticMenuStyle"
StaticMenuItemStyle-CssClass="StaticMenuItemStyle"
StaticSelectedStyle-CssClass="StaticSelectedStyle"
StaticHoverStyle-CssClass="StaticHoverStyle"
Orientation="Horizontal"
MaximumDynamicDisplayLevels="0"
runat="server">
</asp:Menu>
Это работает на StaticMenuStyle-CssClass, и StaticMenuStyle-CssClass (классы применяются к соответствующим элементам), но StaticSelectedStyle-CssClass и StaticHoverStyle-CssClass не применяются, независимо от выбранного или состояния при наведении курсора элемента.
Что я, как предполагается, делаю для создания этой работы?
Спасибо.
Править: Извините я должен был упомянуть, что это-.NET 4. Вот сгенерированный HTML:
<div id="NavigationMenu">
<ul class="level1 StaticMenuStyle">
<li><a class="level1 StaticMenuItemStyle selected" href="/Link.aspx">Link</a></li>
</ul>
</div>
Таким образом, как Вы видите, StaticMenuStyle и StaticMenuItemStyle применяются, но не StaticSelectedStyle-CssClass или StaticHoverStyle-CssClass. Не уверенный, почему. Я знаю, что могу использовать выбранный, но не являюсь ожидаемым поведением это StaticSelectedStyle-CssClass быть примененным??? При помощи выбранного я делаю предположения относительно того, что.NET делает негласно, и это не правильно.
Хорошо, поэтому на сегодняшний день, очевидно, не так много людей пробовали меню .NET 4. Неудивительно, поскольку окончательная версия была выпущена пару дней назад. Кажется, я первый, кто когда-либо сообщал о том, что кажется ошибкой. Я сообщу об этом в MS, если найду время, но, учитывая послужной список MS в том, что я не обращаю внимания на отчеты об ошибках, я не торопясь с этим.
В любом случае, на данный момент наименее худшее решение - скопировать и вставить стили CSS, сгенерированные элементом управления (проверьте заголовок), в вашу собственную таблицу стилей и изменить ее оттуда. После того, как вы это сделаете, не забудьте установить IncludeStyleBlock = "False" в своем меню, чтобы предотвратить автоматическое создание CSS, поскольку с этого момента мы будем использовать скопированный блок. Концептуально это неверно, поскольку ваше приложение не должно полагаться на автоматически сгенерированный код, но это единственный вариант, который я могу придумать.
Следует обратить внимание на то, что HTML выплевывает элемент управления. В этом случае он выставляет таблицу для создания меню. Стиль наведения устанавливается на TD, и как только вы выбираете пункт меню, элемент управления отправляется обратно и добавляет выбранный стиль к тегу A ссылки в TD.
Итак, у вас есть два разных предмета, которыми здесь манипулируют. Один является элементом TD, а другой - элементом A. Итак, вы должны заставить свой CSS работать соответствующим образом. Если я добавлю приведенный ниже CSS на страницу с меню, я получу ожидаемое поведение изменения цвета фона в любом случае. Возможно, вы выполняете различные манипуляции с CSS, которые могут применяться или не применяться к этим элементам.
<style>
.StaticHoverStyle
{
background: #000000;
}
.StaticSelectedStyle
{
background: blue;
}
</style>
Есть неплохие сторонние инструменты, но я обычно использую superfish http://www.conceptdevelopment.net/ Fun / Superfish / это круто, бесплатно и легко;)