ASP.NET AJAX Extensions中UpdatePanel控件概述
一.ASP.NET AJAX Extensions中UpdatePanel控件概述
UpdatePanel可以用來創(chuàng)建豐富的局部更新Web應(yīng)用程序,它是ASP.NET AJAX Extensions中很重要的一個控件,其強(qiáng)大之處在于不用編寫任何客戶端腳本,只要在一個頁面上添加幾個UpdatePanel控件和一個ScriptManager控件就可以自動實現(xiàn)局部更新。簡單的UpdatePanel定義如下:
- <asp:UpdatePanelIDasp:UpdatePanelID="UpdatePanel1"runat="server">
- <ContentTemplate>
- <!---->
- </ContentTemplate>
- <Triggers>
- <asp:AsyncPostBackTrigger/>
- <asp:PostBackTrigger/>
- </Triggers>
- </asp:UpdatePanel>
二.UpdatePanel工作原理
UpdatePanel的工作依賴于ScriptManager服務(wù)端控件和客戶端PageRequestManager類(Sys.WebForms.PageRequestManager,在后面的客戶端類中會專門說到),當(dāng)ScriptManager中允許頁面局部更新時,它會以異步的方式回傳給服務(wù)器,與傳統(tǒng)的整頁回傳方式不同的是只有包含在UpdatePanel中的頁面部分會被更新,在從服務(wù)端返回HTML之后,PageRequestManager會通過操作DOM對象來替換需要更新的代碼片段。
看一下官方網(wǎng)站提供的UpdatePanel工作原理圖:
三.ContentTemplate屬性
Contente Template標(biāo)簽用來定義UpdatePanel的內(nèi)容,在它里面可以放任何ASP.NET元素。如果你想要使用編程的手法來控制UpdatePanel中的內(nèi)容,就需要使用ContenteTemplateContainer,下面會說到
四.ContentTemplateContainer屬性
如果要使用編程的手法去設(shè)置UpdatePanel中的內(nèi)容,需要創(chuàng)建一個UpdatePanel,并且添加控件到ContentTemplateContainer,而不能直接添加控件到ContentTemplate,如果想直接設(shè)置ContentTemplate,則需要編寫一個自定義的Template,并去實現(xiàn)位于System.Web.UI命名空間下的接口ITemplate。
五.Triggers屬性
在ASP.NET AJAX中有兩種Triggers:分別為AsyncPostBackTrigger和PostBackTrigger,AsyncPostBackTrigge用來指定某個服務(wù)器端控件以及其將觸發(fā)的服務(wù)器端事件作為該UpdatePanel的異步更新觸發(fā)器,它需要設(shè)置的屬性有控件ID和服務(wù)端控件的事件;PostBackTrigger用來指定在UpdatePanel中的某個服務(wù)端控件,它所引發(fā)的回送不使用異步回送,而仍然是傳統(tǒng)的整頁回送。這一點跟Atlas有很大的區(qū)別,大家需要注意??匆粋€小例子,雖然兩個Button都放在了UpdatePanel中,但是由于在PostBackTrigger中指定了Button2,所以它使用的仍然是整頁回送。以上是ASP.NET AJAX Extensions中UpdatePanel控件概述
【編輯推薦】