KB-由ASP.NET 1.1昇級的網站無法啟用MS AJAX

上次介紹過如何修改web.config在現有的ASP.NET專案上啟用MS AJAX[註: MS AJAX官方網站上有對各Config Section的詳細說明],我已經用同樣的方法成功升級過好幾個專案,不過今天被電了一下。有個專案無論我怎麼調web.config,MS AJAX就是不生效! 即使Button在Update Panel中,Click也會觸發PostBack。

查了好久,總算找出原因: 由ASP.NET 1.1升級的專案,web.config中會有<xhtmlConformance mode="Legacy"/>的設定,目的在讓ASP.NET 1.1時代建立的非XHTML格式網頁能正常顯示。但它卻會影響MS AJAX的正常運作,用Fiddler比對的結果,加入xhtmlConformance 設定後,原本在網頁HTML中應該要載入三個JS,只會剩一個,而這些JS就是處理Validation、Postback等邏輯的Client Script,少了AJAX功能就會失常!

<script src="http://blog.darkthread.net/MiniAjaxLab/WebResource.axd?d=txk52LiGXXTyXT-eNSvsSQ2&amp;t=633076449793593750" type="text/javascript"></script>
<script src="http://blog.darkthread.net/MiniAjaxLab/ScriptResource.axd?d=opollxqh..略...p_Ag1&amp;t=633076458731093750" type="text/javascript"></script>
<script src="http://blog.darkthread.net/MiniAjaxLab/ScriptResource.axd?d=opollxqh...略...9ffhog0&amp;t=633076458731093750" type="text/javascript"></script>

順道補充一點,熟悉ASP.NET 1.1的人會發現以前放在aspnet_client\system_web\1_1_4322下的webuivalidation.js等檔案,在ASP.NET 2.0中已經找不到了! ASP.NET 2.0導入了webresource.axd的觀念,JS、圖檔可以Embedded進DLL中,再透過WebResource.axd?d=SbXSD3uTnhYsKUOZ6IXYG8QCXW86UizF0&t=632768953157700078的URL動態由DLL中取出傳回Client端,如此,就不必為了額外部署Client端程式而困擾囉! 這招在開發自訂控件(Custom Control)時,十分好用!

歡迎推文分享:
Published 12 March 2007 05:29 PM 由 Jeffrey
Filed under: ,
Views: 5,202



意見

沒有意見

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<March 2007>
SunMonTueWedThuFriSat
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication