本課程將從頭開始使用ASP.NET AJAX用戶端架構/組件建立一個“純粹”的Ajax應用程式的全過程。適合於開發人員學習Ajax所帶來的這種嶄新的開發方式,即將展示層完全放在用戶端,瀏覽器和伺服器之間只傳送純粹的資料。同時也能協助開發人員融會貫通ASP.NET AJAX的用戶端架構。
觀看錄影:(coming soon...)
下載PPT:ASPNETAJAX_IN_ACTION_2.zip
下載代碼:DemoCode.zip
本代碼來自《ASP.NET AJAX程式設計——第II卷:用戶端Microsoft AJAX Library相關》最後一章,書中也詳細介紹了項目具體的分析過程以及實現、編碼方法。
問題解答(朋友們可以在這裡繼續提問)
實戰ASP.NET AJAX系列課程(2):使用用戶端架構建立“純粹”的Ajax應用程式
講師:陳黎夫
活動日期:2007-06-20 14:30--16:00
________________________________________
Q:看到我的問題了嗎?有主版頁面後,opener.document.getElement("id")不能用了?有沒有什麼替代方法?
A:主版頁面面應該和這個問題關係不大,因為畢竟主版頁面和內容實在伺服器端組裝起來,然後作為一個統一的HTML頁面發送給用戶端的。opener.document.getElement懷疑應為opener.document.getElementById。如果有需要,請將程式的範例程式碼發送給我。
________________________________________
Q:這個“純粹”的Ajax應該就是指只在頁面中加入scriptManager之後來使用它的AjaxLibrary進行編程的嗎?
A:可以這樣理解,就是用戶端展示層邏輯都放在用戶端JavaScript中實現,我們在程式中編寫用戶端的控制項/組件,而伺服器端卻只提供“純粹”的資料,然後藉助ASP.NET AJAX非同步通訊層完成伺服器和用戶端的通訊。
________________________________________
Q:if(typeof(sys)!...那句寫在什麼位置
A:寫在獨立JavaScript檔案的最後一行。
________________________________________
Q:有人說Ajax的是網站效能的殺手,會佔用大量的頻寬,請問您有什麼看法?
A:濫用Ajax確實會造成不必要的網路頻寬浪費,不過合理地使用Ajax功能卻會大大節省網路頻寬——畢竟只傳輸了頁面部分內容。
________________________________________
Q:add_initializeRequest在一個頁面的生命週期中起到什麼作用?
A:initializeRequest是PageRequestManager在非同步回送過程中發出的第一個事件。在該事件的處理函數中,我們可以根據實際需要(例如用戶端已經擁有所需要的資料,或是為其他高優先順序的請求讓位等)取消該本次非同步回送請求。
________________________________________
Q:我在網上學到了一種方法:建立一個類,類裡面有只有一個屬性,該屬性返加一個帶HTML標記的字串,然後通過webservice 初始化該類。和您剛才的講的方法一樣嗎?
A:對不起我沒能理解您的意思,能再明確一些說明嗎?
________________________________________
Q:如何響應服務端的事件
A:如果是在伺服器端回應時間,那麼只要編寫事件處理函數就好了。如果您想在用戶端響應伺服器端事件,那麼基於現在的HTTP模型還比較困難。
________________________________________
Q:剛才的例子中,首先顯示progress,然後調用回呼函數,可每個回呼函數裡都有一個能數result,那個參數是類的執行個體嗎?
A:result中的資料就是調用Web Service方法的傳回值,如果Web Service方法返回int,那麼它就是個int,如果Web Service方法返回數組,那麼它就是個數組。
________________________________________
Q:RSS.NET 這個 Library 可以 share 一下嗎? 可以發給我們嗎?
A:請至http://www.rssdotnet.com/免費下載。
________________________________________
Q:聽說在Orcas中整合了ASP.Net Ajax控制項,是這樣嗎?
A:是的,Orcas中ASP.NET AJAX控制項已經被整合到Visual Studio的Toolbox中。
________________________________________
Q:如果用asp.net ajax架構,只有用用戶端調用webservice這一種方法嗎?
A:還可以調用ASP.NET頁面中的靜態方法。
________________________________________
Q:可以在initializeRequest過程中暫停某個控制項的PostBack行為嗎?不是Abort,而是指讓其等待某個用戶端的相應後,再決定是否繼續執行
A:可以嘗試如下思路:在initializeRequest時複製並儲存當前的Sys.Net.WebRequest對象,然後取消原來的這個WebRequest。在其他響應到達之後,如果有需要,再取得這個儲存的WebRequest並繼續發出。