(轉)MrXie 之Asp.Net Ajax系列(二) 局部頁面呈現

MrXie Asp.Net Ajax系列(局部頁面呈現(Partial-Page Rendering
MrXie
觀察前面一篇文章的例子,你將在aspx頁面的源代碼發現<asp:UpdatePanel><asp:ScriptManager〉兩個標籤,這裏我們將解釋其局部頁面呈現的概念。
局部頁面呈現(Partial-Page Rendering)可以理解爲局部頁面加載,根據我們上一個例子,局部頁面加載技術能夠使得我們避免重新加載整個頁面,它只更新我們需要刷新的部分,因此將大大減少用戶等待時間,增強用戶體驗。上篇文章使用Microsoft Asp.Net 2.0 Ajax Extensions 組件,將使得我們不用寫任何客戶端javascript代碼, 就可以使用這種技術。
Microsoft ASP.NET2.0 AJAX Extensions 使得我們能輕鬆擴展我們現有的asp.net 2..0應用程序,使得它能具備AJAX特性。我們可以在以下情況是用它:
  •       極力提高用戶的網頁交互體驗,增強響應感受,使得網頁行爲接近傳統客戶端程序。
  • 減少整頁刷新,避免反覆刷新而產生的閃動。
  • <!--[if !supportLists]--> <!--[endif]-->不必爲兼容不同瀏覽器而編寫客戶端腳本
  • <!--[if !supportLists]-->充分發揮AJAX的客戶端與服務器通信特性,而不用編寫任何客戶端腳本
  • <!--[if !supportLists]-->充分享受 ASP.NET AJAX Control Toolkit 的控件和組件的高效率
  • <!--[if !supportLists]--> <!--[endif]-->開發自定義控件
局部頁面呈現依賴於ASP.NET 2.0 AJAX Extensions的服務器端控件和在Microsoft AJAX Library 中的客戶端功能。在應用的過程中並不要求你使用Microsoft AJAX Library,因爲它的功能將在你使用服務器端控件的時候自動提供。當然,你也可以直接調用該庫的開放API,去開發具備其他的AJAX特性的網頁。
Partial-Page Rendering的基本特徵包含:
<!--[if !supportLists]--><!--[endif]-->Asp.net服務器控件一樣的聲明模型。在很多情況下,你僅僅聲明一個標籤就可以定製局部頁面呈現。
  • <!--[if !supportLists]--> <!--[endif]-->擁有服務器端控件,包含 ScriptManagerUpdatePanel 控件。
  • <!--[if !supportLists]--> <!--[endif]-->服務器端控件和Microsoft AJAX Library集成,爲普通任務提供實現類似取消postback或決定多次點擊後如何運行的能力
  • <!--[if !supportLists]--><!--[endif]-->錯誤處理機制能使你將錯誤自定義的顯示在瀏覽器裏。
  • <!--[if !supportLists]--> <!--[endif]-->跨瀏覽器的兼容性已經融入Microsoft AJAX Library. 易於使用的服務器控件將自動調用匹配適合瀏覽器的功能
背景
使用ASP.Net服務器控件的典型網頁能夠通過已被初始化的用戶行爲完成提交,比如說點擊一個按鈕。在響應流中,服務器將呈現一個新網頁。在很多情況下,完全沒有必要在提交之間重新呈現那些沒有任何改變的控件和文本。
使用ASP.NET AJAX 局部頁面呈現技術,你只需要更新一個網頁中的獨立區域部分,使得其對用戶有更好的響應性。你可以使用ASP.NET的服務器控件,也可以寫客戶端腳本來調用Microsoft AJAX Library中的API來實現局部頁面呈現。
服務器端控件
 
想要在ASP.NET網頁上實現AJAX功能,你必須標識一個需要更新的獨立區域。於是你需要使用UpdatePanel控件來進行包裝該區域,裏面可以放HTML也可以是ASP.NET控件。你可以在網頁Design視圖下從工具欄將其拖入,也可以使用在Source視圖中以聲明標籤的方式實現。就像下面
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <!-- Place updatable markup and controls here. -->
    </ContentTemplate>
</asp:UpdatePanel>
 
在上一個篇的例子裏,你如果察看源文件,也將會看到這個標籤。
 
所有包含自這個update panel 內的控件所引發的提交都會在默認情況下自動以異步的方式執行,使得該區域能夠實現局部頁面的更新。你也可以指定一個update panel區域以外的一個控件去引發該區域的提交和刷新,也就意味着你可以指定某個控件作爲其觸發器。關於這部分內容我們將在以後會提到。
當異步提交就像一次普通的提交在服務器的頁面事件中發生的時候,ViewStateForm的數據將被保存下來。然而,除了在updatePanel中的內容會在客戶端瀏覽器更新,其餘的將保持原狀。
爲了實現局部頁面呈現,你還有一件事情要做,就是放置一個ScriptManager控件在頁面上。ScriptManager控件自動跟蹤頁面上所有的update panel,同時也充當着他們的觸發器,調整服務器局部頁面呈現的行爲,指示頁面的某個部分作爲最近一次異步提交的顯示結果。
放在form標籤中即可
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
局部頁面呈現的缺陷
如果局部頁面呈現失效或者瀏覽器不支持,那麼提交將變得和任何普通ASP.Net網頁一樣,異步提交行爲將被同步提交和整頁更新所替代,UpdatePanel控件將失效,控件裏的內容就象沒有放在裏面一樣。
後面我將講解UpdatePanel具體使用的例子
下一篇:MrXie 之Asp.Net Ajax系列(三)UpdatePanel使用初步。
 
發佈了21 篇原創文章 · 獲贊 4 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章