【发布时间】:2011-03-15 12:41:00
【问题描述】:
我在一个 ASP.NET 4.0 Webforms 页面上使用asp:Menu 控件,该页面具有无表呈现模式:
<asp:Menu ID="MenuBase" runat="server" DataSourceID="SiteMapDataSourceMenu"
Orientation="Horizontal" CssClass="contentmenu" RenderingMode="List"
IncludeStyleBlock="false">
</asp:Menu>
菜单有一个水平主行,其中包含 5 或 6 个菜单项,其中一些在用户悬停在它们上方时会打开垂直弹出菜单。
通常,当任何回发发生并且页面再次呈现时,菜单“闪烁”片刻(例如,半秒),这意味着:所有菜单项 - 包括弹出菜单中的项目 - 都显示在一个或多个中在它们返回到正常预期状态之前,一个接一个的行。
在所有菜单项“展开”显示的这一短暂时刻,菜单看起来就像在浏览器中禁用了 Javascript。 (似乎构建弹出菜单是通过在 asp:menu 控件中使用一些 Javascript 来实现的。)
这种行为非常难看,尤其是在大菜单(在 2 或 3 行上短暂呈现)整个页面内容在跳回正常显示之前会向下移动。
你知道这个问题的任何解决方案吗?
提前谢谢你!
(备注:我应该提一下,在升级到 ASP.NET 4.0 之前,我使用了 CodePlex 中著名的 CSS 友好菜单控件。我想我不再需要 CSS 友好控件了,因为 asp:版本 4 中的菜单现在提供了一个内置的列表渲染模式。据我所知,我没有这种闪烁的 CSS 友好控件,我认为这个控件没有使用 Javascript。也许这是一个糟糕的步骤. 如果可能的话,我现在正在寻找一种解决方案,而无需返回对 CSS 友好的菜单控件。)
编辑:
这种闪烁与浏览器无关,尽管在 IE 8 和 7 中最为明显。在 IE 7(或 IE 8 中的兼容模式)中,它非常难看,因为即使超过 5 或 6 行,菜单项也会以疯狂的对角线模式显示。
【问题讨论】:
-
您没有提到您正在使用母版页,但是此问题中的一些答案可能会有所帮助(不确定您是否已经看过)。 stackoverflow.com/questions/888245/…
-
感谢您的链接!这有很大帮助!我没有看到这个问题。是的,我正在使用母版页,乍一看,似乎将菜单包含在其自己的 ContentPlaceHolder 中的解决方案正在运行。我最终必须在实时服务器上对其进行测试,因为在我的开发机器上我不会经常出现这种闪烁。在互联网上具有正常“实时延迟”的生产服务器上更为明显。
-
不幸的是,在具有真实延迟的实时服务器上进行的测试表明,将菜单包含在其自己的 ContentPlaceHolder 中的解决方案并没有真正起作用。闪烁仍然存在(在 IE 8(有和没有兼容模式)和 Firefox 中测试)。
标签: asp.net menu asp.net-4.0 aspmenu-control