ASP.NET 4.0删除controlRenderingCompatibilityVersion ="3.5"后呈现菜单控件的问题

Dir*_*aus 26 .net asp.net visual-studio-2010 asp.net-4.0

我实际上是将网站迁移到ASP.NET 4.0,但是新的菜单控件渲染存在问题.我的网站大量使用嵌套菜单.使用悬停效果,布局由主题和皮肤与链接CSS的组合定义.

如果我删除了页面controlRenderingCompatibilityVersion属性,它们不再呈现为嵌套表,而是呈现为ul/li标签.这在很多方面打破了我的布局.有关迁移复杂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>
Run Code Online (Sandbox Code Playgroud)

样式表

.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%;
}
Run Code Online (Sandbox Code Playgroud)

Sla*_*uma 32

如果controlRenderingCompatibilityVersion从web.config中删除该属性,则菜单呈现的默认模式会自动更改TableList.如果您仍希望使用表格标签呈现菜单,则需要通过添加RenderingMode属性在asp:menu控件中明确指定:

<asp:Menu runat="server" RenderingMode="Table" ... >
   ...
</asp:Menu>
Run Code Online (Sandbox Code Playgroud)

(同样是MSDN中的备注部分:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.renderingmode.aspx)