4

http://i44.tinypic.com/5ureav.png

当我的页面偶尔呈现时,水平菜单会像这样显示。为什么?

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" 
    EnableViewState="false" IncludeStyleBlock="false" 
    Orientation="Horizontal" ClientIDMode="AutoID">
    <Items></Items>
</asp:Menu>

它通常在页面加载大量数据时执行此操作,但当数据完成加载时,它永远不会回到水平状态。

使用 IE 7、8 和 9 以及 Chrome 进行测试。

我环顾互联网,发现有人说这是z-index,但调整没有帮助。

我在 IE8 中使用“开发人员工具”进一步排除故障,发现一些没有成功的 javascript 调用。我不知道它们是什么意思。

<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$MainContent$tsmgrEmployees', 'aspnetForm', ['tctl00$MainContent$uPanelEmployees',''], ['ctl00$MainContent$btnClear','','ctl00$MainContent$txtEUID','','ctl00$MainContent$txtFirstName','','ctl00$MainContent$txtLastName',''], [], 90, 'ctl00');
//]]>
</script>

产生的错误

'Sys.WebForms.PageRequestManager' 为 null 或不是对象

<script type='text/javascript'>new Sys.WebForms.Menu({ element: 'ctl00_NavigationMenu', disappearAfter: 500, orientation: 'horizontal', tabIndex: 0, disabled: false });</script>

产生的错误

'Sys.Webforms.Menu' 为 null 或不是对象

我相信剩下的错误都是这两个的级联。你认为我应该用更新的库替换 jscript 库吗?由于我使用的是 IE8(不在兼容模式下),它可能与浏览器相关。

另一个可能有帮助的奇怪信息是,当我在开发环境的 WinXP Pro 上的 Visual Studio 2010 中构建解决方案时,它工作正常,但是当我将它发布到服务器(IIS 7.5、Server 2008 R2)时它会中断。起初我以为可能是数据滞后,但是服务器上的连接字符串应该比我的开发环境上的连接字符串快。服务器使用本地主机作为目标,我的开发工作站使用服务器路径......所以我认为它不是数据滞后。

4

3 回答 3

5

我有同样的问题。我通过在 asp:Menu 控件下设置 RenderingMode="Table" 来解决它。

例子:

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" RenderingMode="Table">
        <StaticMenuItemStyle CssClass="menuitem" />
        <DynamicMenuItemStyle CssClass="menuitem" />

您将不得不更多地使用 css(删除 css 中的 'ul' 和 'li' 属性)。

创造

 <StaticMenuItemStyle CssClass="menuitem" />
 <DynamicMenuItemStyle CssClass="menuitem" />

在菜单控制(如上所示)中也有助于 css 格式化。

出于某种原因,菜单列表造成了这个问题。这至少是一种解决方法。

于 2012-07-23T03:56:11.197 回答
2

从 Visual Studio 2010 / .NET 4.0 开始,ASP:Menus 呈现为项目符号列表 ( ul) 而不是tables。您必须有影响uls 的 CSS 覆盖菜单的预期设计。

于 2012-02-01T22:19:45.513 回答
2

我有同样的问题。原来是由我的 Global.asax 文件中的以下行引起的:

RouteTable.Routes.MapPageRoute("", "{*dummy}", "~/Default.aspx")

我想将请求不存在路由的用户发送到 Default.aspx 页面。显然,这具有浏览器无法找到水平呈现菜单所需的 JS 文件的不良副作用。

于 2012-08-22T13:35:41.637 回答