.net - ASP.NET 4.0 移除 controlRenderingCompatibilityVersion ="3.5"后菜单控件的渲染问题

标签 .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>

样式表
.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 的属性菜单呈现的默认模式隐式更改自 TableList .如果您仍然希望使用表格标签呈现您的菜单,您需要通过添加 RenderingMode 在您的 asp:menu 控件中明确指定这一点。属性:

<asp:Menu runat="server" RenderingMode="Table" ... >
   ...
</asp:Menu>

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

关于.net - ASP.NET 4.0 移除 controlRenderingCompatibilityVersion ="3.5"后菜单控件的渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3063156/

相关文章:

c# - 即使 AllowAutoRedirect = true,HttpClient 也不会重定向

c# - Microsoft.ApplicationInsights 错误 : InstrumentationKey cannot be empty

c# - 如何在 dotnetnuke 框架中创建 Web 应用程序?

windows - 生成具有数百个项目的 VS 2010 依赖项的解决方案

c# - 调试使用来自 Vista API 的 FileDialog 的 Visual Studio 2010 解决方案的问题

c# - 将对象传递给 T4 文本模板

c# - 线程启动滞后于 UI WPF

.net - 您如何使用 NHibernate 实现 3 层模型?

c# - 是否有可能在 asp.net mvc 5 代码优先方法中有一个表列可以容纳多个字符串?

asp.net - 解析器错误消息 : Unrecognized attribute 'targetFramework' . 请注意,属性名称区分大小写