程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 在ASP.NET AJAX中別使用mode=Legacy

在ASP.NET AJAX中別使用mode=Legacy

編輯:.NET實例教程
     最近,我幫過幾個開發人員,他們遇上了一些古怪的JavaScript問題,這些問題會在使用ASP.Net AJax 以及他們的一些自定義的JavaScript腳本時出現。問題的主因在於,他們是把VS 2003 Web項目自動移植到VS 2005的,在他們的web.config文件中還配置有 <xHtmlConformance mode="Legacy"/> 。
  
    假如你在你的 web 應用中編寫了自定義的客戶端JavaScript腳本,而且將使用AJax的話,請讀下去,了解如何避免這個常見的疑難雜症。
  
    症狀:
  
    當你往先前成功地從VS 2003 升級到VS 2005的項目中添加新的客戶端JavaScript腳本時,你會看到奇怪的行為。在使用ASP.Net AJax UpdatePanel 控件時,這個奇怪的行為有時會包括頁面做整頁 postback,而不僅是遞增性的局部更新的情形。
  
    當你打開你的web.config文件,你會看到其中的 <xHtmlConformance/> 元素,象這樣:
  
  <configuration>
  
   <system.web>
   <xHtmlConformance mode="Legacy" />
   </system.web>
  
  </configuration>
    背景:
  
    ASP.NET 1.0 和 1.1 中的許多服務器端控件並不輸出與XHtml兼容的標識。ASP.Net 2.0 對此做了改變,在默認情形下,所有的服務器端控件都會輸出與XHtml兼容的標識 。
  
    但在早期的ASP.NET 2.0 beta 中我們注意到的一件事情是,當把客戶應用升級時,其實,很多應用會假設頁面輸出並不是與XHTML兼容的。把我們服務器控件的默認輸出改成與XHTML兼容的話,它有時會修改頁面的視覺顯示。為向後兼容的目的,我們添加了上面這個 <xHtmlConformance> 設置,允許開發人員可以設置控件以Legacy模式(即與ASP.Net 1.1一樣,會輸出非XHTML標識),或者Transitional 模式 (XHTML Transitional) ,或者 Strict 模式 (XHtml Strict)顯示。
  
    在默認情形下,當你使用VS 2003升級到VS 2005的Web項目移植向導時(無論是網站或 web 應用項目),你的web.config文件裡會添有這個legacy配置。
  
    解決方案:
  
    除非你已知當你的網站以XHTML模式運行時會有問題(但你還沒時間更正),我總是建議從你的web.config文件裡去掉 <xHtmlConformance> 這部分,或者你也可以明確地將其設置為Transitional 或 Strict。
  
    這將使得你的HTML輸出是符合標准的,此外,這也將導致你的服務器控件的HTML輸出是well formed,即, 開始標簽和結束標簽總是相匹配的。當你使用AJax技術來動態替換你的頁面上某些Html元素的內容時,這尤其重要,否則的話,客戶端JavaScript腳本有時會搞不清楚容器元素,導致出錯。它也將確保ASP.Net AJax會在你的網站上正常工作。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved