2010-07-21 130 views
0

當我在ASP.NET呈現頁面時,會發生以下情況爲什麼元件刷新標籤和標題標籤位於ASP.NET的<head>標籤之外?

</head> 
<NOSCRIPT> 
<meta http-equiv="REFRESH" content="0;URL=/Default.aspx?id=84&epslanguage=en-GB&jse=0" /> 
</NOSCRIPT> 
<title>Page title goes here.</title> 
<body> 

我的母版是這樣的:

<title>Page title goes here.</title> 
</head> 
<body> 

那麼,我問的是,這裏到底有此刷新元標籤來自哪裏,爲什麼它把它放在我的頭部標籤和身體標籤之間,爲什麼我的頁面標題跳出頭部?

當查看頁面的螢火蟲產生源,它顯示的標題標籤和head標籤內的這一新meta標籤,但在任何瀏覽器中查看源,它看起來像上面。使用wget刮取頁面時,它也會出現錯誤,如上所示。

任何想法,爲什麼瀏覽器可能會以不同的方式來解釋這一點,更重要的是,其中新meta標籤已經從何而來?

謝謝!卡爾。

編輯:

嗨!

感謝您的答覆傢伙,非常豐富!

我發現,問題是這行代碼:

Page.Header.Controls.Add(ctrl); 

把神祕的元標記使用這條線把它的頭標記之外。當評論這件事時,標題標籤會回落到正確的位置,一切都很好!

還有什麼想法?

謝謝!

卡爾。

+0

你能告訴我們更多的代碼嗎 – 2010-07-21 09:23:21

+0

你可以使用'Fiddler'來檢查服務器真正發送的內容 - 在代碼被客戶端瀏覽器處理之前。 http://www.fiddler2.com/ – 2010-07-21 09:33:36

回答

0

爲什麼瀏覽器會解釋它的不同的事情有兩個答案。首先,你所說的螢火蟲輸出是生成源。這意味着它已經經過了一定的處理,顯然firefox正在做一些魔法來說:「它是一個元標題和一個標題標籤,它們應該在標題中,以便我將它們放在那裏。」

您比較它們的原始來源的其他瀏覽器,它聽起來就像是在瀏覽器試圖理解它之前。如果你在firefox中查看原始源代碼(ctrl-u),我懷疑你會得到同樣的結果。

我會期待所有的瀏覽器做同樣的事情,你所描述Firefox作爲做什麼,但如果沒有的話,這不是真的somethign被關注。當收到這樣的無效HTML時,瀏覽器沒有真正的規則來做什麼。這意味着瀏覽器可以做任何他們想要的,試圖猜測你的意思是完全忽略它。

至於是什麼導致它,epslanguage查詢參數來自episerver - 我不知道這是否在請求url中,所以它可能只是被持續存在,或者它可能是epowerver試圖用一種明確的語言重定向到一個頁面,而不是僅僅假設默認的。不幸的是我對episerver不熟悉,所以我不能說更具體的。

當然肯定是在你的服務器端有東西導致這種情況發生。

您是否對所有頁面感興趣或僅僅是某一特定情況?

+0

感謝您的回覆傢伙!我已經編輯了我的問題,提供了更多關於我發現的信息! – Karl 2010-07-21 15:43:49

+0

@Karl:你可以發佈多一點你的母版頁嗎?主要是從你開始的位置開始,因此我們有完整的頭部元素可見... – Chris 2010-07-21 16:11:40

0

很多時候,這是一個元素沒有正確關閉的情況。大多數瀏覽器都會嘗試調整標記以使其有意義,但在大多數情況下,標記將被錯誤地解析。

你應該多分享一下你的母版頁(以及使用它的網頁表單)!

0

也許你的HEAD標籤沒有runat =「server」?