我正在使用asp:Menu
无表呈现模式的 ASP.NET 4.0 Webforms 页面上的控件:
<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:Menu 4现在提供了一个内置的List渲染模式。据我记得我没有这个闪烁的CSS友好控件,我认为这个控件没有使用Javascript。也许这是一个糟糕的步骤。我是如果可能的话,现在寻找解决方案,而无需返回 CSS 友好的菜单控件。)
编辑:
这种闪烁与浏览器无关,尽管在 IE 8 和 7 中最为明显。在 IE 7(或 IE 8 中的兼容模式)中,它非常难看,因为即使超过 5 或 6 行,菜单项也会以疯狂的对角线模式显示。