【導讀】假如你在你的 web 應用中編寫了自定義的客戶端javascript腳本,而且將使用ajax的話,需要了解如何避免文中提到的這個常見的疑難雜癥。
開發人員遇上了一些古怪的javascript問題,這些問題會在使用asp.net ajax 以及他們的一些自定義的javascript腳本時出現。
問題的主因在于,他們是把vs 2003 web項目自動移植到vs 2005的,在他們的web.config文件中還配置有 。
假如你在你的 web 應用中編寫了自定義的客戶端javascript腳本,而且將使用ajax的話,請讀下去,了解如何避免這個常見的疑難雜癥。
癥狀:
當你往先前成功地從vs 2003 升級到vs 2005的項目中添加新的客戶端javascript腳本時,你會看到奇怪的行為。在使用asp.net ajax updatepanel 控件時,這個奇怪的行為有時會包括頁面做整頁 postback,而不僅是遞增性的局部更新的情形。
當你打開你的web.config文件,你會看到其中的 元素,象這樣:
背景:
asp.net 1.0 和 1.1 中的許多服務器端控件并不輸出與xhtml兼容的標識。asp.net 2.0 對此做了改變,在默認情形下,所有的服務器端控件都會輸出與xhtml兼容的標識 。
但在早期的asp.net 2.0 beta 中我們注意到的一件事情是,當把客戶應用升級時,其實,很多應用會假設頁面輸出并不是與xhtml兼容的。把我們服務器控件的默認輸出改成與xhtml兼容的話,它有時會修改頁面的視覺顯示。為向后兼容的目的,我們添加了上面這個 設置,允許開發人員可以設置控件以legacy模式(即與asp.net 1.1一樣,會輸出非xhtml標識),或者transitional 模式 (xhtml transitional) ,或者 strict 模式 (xhtml strict)顯示。
在默認情形下,當你使用vs 2003升級到vs 2005的web項目移植向導時(無論是網站或 web 應用項目),你的web.config文件里會添有這個legacy配置。
解決方案:
除非你已知當你的網站以xhtml模式運行時會有問題(但你還沒時間更正),我總是建議從你的web.config文件里去掉 這部分,或者你也可以明確地將其設置為transitional 或 strict。
這將使得你的html輸出是符合標準的,此外,這也將導致你的服務器控件的html輸出是well formed,即, 開始標簽和結束標簽總是相匹配的。當你使用ajax技術來動態替換你的頁面上某些html元素的內容時,這尤其重要,否則的話,客戶端javascript腳本有時會搞不清楚容器元素,導致出錯。它也將確保asp.net ajax會在你的網站上正常工作。
新聞熱點
疑難解答
圖片精選