2012-02-01 145 views
4

http://i44.tinypic.com/5ureav.png水平asp.net菜單顯示爲垂直列表

當我的網頁渲染偶爾水平菜單顯示這樣。爲什麼?

<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' 爲空或

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

錯誤產生

'Sys.Webforms.Menu' 不是一個對象爲空或不是一個對象

我相信其餘的錯誤都是來自這兩個級聯。你認爲我應該用更新的庫替換jscript庫嗎?因爲我使用的是IE8(不是兼容模式),它可能是瀏覽器相關的。當我在我的開發環境中在WinXP Pro上的Visual Studio 2010中構建解決方案時,它可以正常工作,但是當我將它發佈到服務器(IIS 7.5,Server 2008 R2)時,它打破了。起初,我認爲它可能是數據滯後,但服務器上的連接字符串應該比我的開發環境上的連接字符串更快。服務器使用本地主機作爲目標,我的開發工作站使用服務器路徑...所以我不認爲它的數據滯後。

回答

1

我有同樣的問題。原來,由下面一行在我的Global.asax文件造成的:

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

我想向用戶發送請求不存在路由到Default.aspx頁。顯然,這具有不必要的副作用,即瀏覽器無法找到水平呈現菜單所需的JS文件。

2

由於的Visual Studio 2010/.NET 4.0,ASP:Menu的render項目符號列表(ul),而不是table S的。您必須擁有影響ul的CSS,這會覆蓋菜單的預期設計。

+0

請注意,我假設您在以前的問題中使用基於標記的.NET 4.0。 – 2012-02-01 22:20:29

+0

你是對的,.net 4.我正在瀏覽CSS。謝謝 – Lucretius 2012-02-02 02:18:03

+0

我更新了原始文章,並提供了有關錯誤的其他詳細信息。我只是在IE 8中找到了這些使用開發工具。 – Lucretius 2012-02-02 19:13:32

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(刪除 'UL' 和 '禮' 的屬性在你的CSS)。

創建

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

在菜單控制(如上所示)也有助於CSS格式。

出於某種原因菜單列表正在創建此問題。這至少是一種解決方法。

+0

爲我解決了它。謝謝! – smoore4 2013-11-03 10:34:25

+0

我知道這是一個古老的問題,並希望這個評論/問題仍然會被看到並回復。 作爲表格渲染(雖然最推薦這個)解決了這個問題,但我漂亮的菜單按鈕變成醜陋的超鏈接。我失去了我所有的格式。我一直在調整CSS來嘗試解決這個問題。如何在使用RenderingMode =「Table」時將菜單ul li格式化並應用於此處?我一直在搜索一個CSS格式化教程或例子,並且找不到任何東西。 – DJGray 2015-04-06 17:21:19