Я на самом деле перемещаю веб-сайты в ASP.NET 4.0, имея проблемы с новым рендерингом средств управления меню. Мои веб-сайты делают интенсивное использование вложенных меню. Эффекты при наведении курсора используются, и расположение определяется комбинацией тем и кожи со связанным CSS.
Если я удаляю страницы controlRenderingCompatibilityVersion атрибут, они больше не представляются как вложенные таблицы, но как Теги ул./лития. Это повреждает мое расположение во многих отношениях. Любые рекомендации для миграции сложного расположения меню ASP.NET очень приветствуются.
Отредактированный: Разметка и CSS детализируют как ответ на комментарий
Соответствующий раздел файла кожи
<asp:Menu runat="server" DynamicHorizontalOffset="2" Orientation="Horizontal" SkipLinkText=""
StaticPopOutImageUrl="~/App_Images/Themes/arrow_down.gif" DynamicPopOutImageUrl="~/App_Images/Themes/arrow_right.gif">
<StaticMenuItemStyle CssClass="MenuDefaultMenuItemStyle" />
<DynamicMenuItemStyle CssClass="MenuDefaultMenuItemStyle" />
<StaticSelectedStyle CssClass="MenuDefaultSelectedStyle" />
<DynamicSelectedStyle CssClass="MenuDefaultSelectedStyle" />
<StaticHoverStyle CssClass="MenuDefaultHoverStyle" />
<DynamicHoverStyle CssClass="MenuDefaultHoverStyle" />
</asp:Menu>
<asp:Menu runat="server" SkinId="MenuVertical" DynamicHorizontalOffset="2" SkipLinkText=""
StaticPopOutImageUrl="~/App_Images/Themes/arrow_right.gif" DynamicPopOutImageUrl="~/App_Images/Themes/arrow_right.gif">
<StaticMenuItemStyle CssClass="MenuVerticalMenuItemStyle" />
<DynamicMenuItemStyle CssClass="MenuVerticalMenuItemStyle" />
<StaticSelectedStyle CssClass="MenuVerticalSelectedStyle" />
<DynamicSelectedStyle CssClass="MenuVerticalSelectedStyle" />
<StaticHoverStyle CssClass="MenuVerticalHoverStyle" />
<DynamicHoverStyle CssClass="MenuVerticalHoverStyle" />
</asp:Menu>
Таблица стилей
.MenuDefaultMenuItemStyle
{
background-color: #D5DCE1;
color: #234875;
padding: 2px;
width: 100%;
}
.MenuDefaultSelectedStyle
{
background-color: #3C5778;
color: #FFFFFF;
padding: 2px;
width: 100%;
}
.MenuDefaultHoverStyle
{
background-color: #666666;
color: #FFFFFF;
padding: 2px;
width: 100%;
}
.MenuVerticalMenuItemStyle
{
background-color: #FFFFFF;
border: 1px solid #D5DCE1;
color: #234875;
height: 30px;
padding: 2px;
width: 100%;
}
.MenuVerticalSelectedStyle
{
background-color: #003366;
border: 1px solid #D5DCE1;
color: #FFFFFF;
height: 30px;
padding: 2px;
width: 100%;
}
.MenuVerticalHoverStyle
{
background-color: #EEEEEE;
border: 1px solid #000000;
color: #234875;
height: 30px;
padding: 2px;
width: 100%;
}
Если вы удалите атрибут controlRenderingCompatibilityVersion
из web.config, режим по умолчанию для отображения меню неявно изменится с Таблица
на Список
. Если вы по-прежнему хотите, чтобы ваше меню отображалось с помощью тегов таблиц, вам необходимо явно указать это в элементе управления asp: menu, добавив атрибут RenderingMode
:
<asp:Menu runat="server" RenderingMode="Table" ... >
...
</asp:Menu>
(см. Также раздел примечаний здесь, в MSDN: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.renderingmode.aspx )