2010-03-22 21 views
3

我們有一個使用MS Ajax 1.0的ASP.NET 2.0 WebForms應用程序。它在我們所有的環境(開發,測試,IE6虛擬機等)上運行良好。但是,在客戶端,客戶端驗證沒有發生。爲什麼ASP.NET可能會將JavaScript置入HTML註釋塊,而不是CDATA?

我們正在嘗試消除所有各種因素,並且沿着我們要求他們獲取其頁面源並將其發送給我們的方式,並且我們發現了一些有趣的內容。

在我們的環境,我們的頁面在CDATA塊ASP.NET的javascript:

<script type="text/javascript"> 
//<![CDATA[ 
. . . 
//]]> 
</script> 

在他們的環境,同樣的代碼看起來是這樣的:

<script type="text/javascript"> 
<!-- 
. . . 
//--> 
</script> 

這可能是一個紅色的鯡魚,但我想將其作爲驗證問題的原因消除。

有誰知道ASP.NET的特定配置/補丁/版本是否會讓它做到這一點?

回答

2

查看一下部署機器上的machine.config中是否設置正是如此:

<xhtmlConformance mode="Transitional" /> 

它可以設置爲「遺產」來代替。

+0

(真的只是JacobM的答案的一個變種,謝謝!) – LesterDove 2010-03-22 16:55:59

3

這可能與如何(或是否)頁面爲rendered as XHTML有關。在web.config中,查找xhtmlConformance元素。在你的例子中,你的環境中的版本在xhtml中是正確的用法,但是他們環境中的版本看起來像傳統的HTML,而不是xhtml。

1

將以下行添加到我的應用程序的web.config時,確實阻止了JavaScript以塊的形式呈現,但沒有解決驗證問題。

<xhtmlConformance mode="Transitional" /> 

什麼修正了驗證問題:在服務器上安裝.NET 2.0 Server Pack 2。似乎從.NET 2.0上的MS Ajax 1.0庫中使用s可能會破壞你的s,除非你安裝了SP2。

相關問題