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)时休息。起初我以为它可能是数据滞后,但服务器上的连接字符串应该比我的开发环境中的连接字符串更快。服务器使用Localhost作为目标,我的开发工作站使用服务器路径...所以我不认为它的数据滞后。
答案 0 :(得分: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格式化。
由于某种原因,菜单列表正在创建此问题。这至少是一种解决方法。
答案 1 :(得分:2)
从Visual Studio 2010 / .NET 4.0开始,ASP:Menu
呈现为项目符号列表(ul
)而不是table
。您必须拥有影响ul
的CSS,它会覆盖菜单的预期设计。
答案 2 :(得分:2)
我遇到了同样的问题。事实证明这是由我的Global.asax文件中的以下行引起的:
RouteTable.Routes.MapPageRoute("", "{*dummy}", "~/Default.aspx")
我想将请求不存在路由的用户发送到Default.aspx页面。显然,这会产生不必要的副作用,浏览器无法找到水平渲染菜单所需的JS文件。