【翻譯】Atlas Documents : UpdatePanel Class

來源:互聯網
上載者:User
說明:對Atlas系列文章的翻譯將以先前制定的翻譯順序進行,為了保持原文的味道,翻譯過程中盡量保證不做刪節。為了保證可讀性和連貫性,文中對一些詞彙的翻譯作了英文注釋,由於能力有限,在翻譯和學習過程中可能有疏漏和不當之處,還望大家多多指點。總體來說這部分翻譯的文章只是一個介紹和概括性的,更詳細的部分請參考請他園子裡講解atlas的文章。

原文地址:這裡
翻譯:範維肖

UpdatePanel Class
作用:將一個頁面分成多個地區,每個地區都可以在不重新重新整理整個頁面的前提下更新其內容(局部回傳)
文法:Public Class UpdatePanel:Control

備忘
當頁面的一部分在回傳後需要改變時,通常整個頁面都需要重新整理,UpdatePanel解決了這個問題,通過UpdatePanel我們可以使用部分更新(patial update)通過更多的頻繁多回傳來減少螢幕的閃爍(整個頁面重新整理時會造成screen flicker),同時可以使得您建立更具有互動能力的web應用程式。

當您在開發一個asp.net頁時使用部分更新(partial rendering)時,這個頁面看起來和普通的沒有什麼區別。不同之處在於這個頁面裡包含了一個ScriptManager控制項,它用作管理部分更新。這使得頁面上的各個UpdatePanel可以獨立工作,互不影響。當然,您也可以把UpdatePanel控制項放到User Control裡或者Master裡去用。

當使用部分更新(partial-rendering)時,控制項能執行原始的整頁回傳(regular postback)或使用單獨的UpdatePanel的非同步回傳(asynchronous poskback),如果允許非同步回傳,將控制項放如UpdatePanel裡就能使用這個功能了。所有在UpdatePanel以外的控制項都將導致整頁回傳,但是這裡有幾個例外情況:
1.    像TimerControl這樣的沒有使用者介面的組件。
2.    註冊到ScriptManager.RegisterAsyncPostBackControl方法的控制項
3.    被串連到UpdatePanel的觸發器(triggers)的控制項
這三種情況下的控制項始終進行部分回傳。

為了使得頁面的某些部分可以更新,您需要把ScriptManager控制項加入到您的頁面並且設定它的partialRedering屬性為true。然後使用UpdatePanel控制項把頁面分成可以獨立更新的地區,同時指定一個引起這些地區重新整理的觸發條件。更新地區的內容可以在UpdatePanel中的ContentTemplate裡描述。

當頁面第一次被載入(render)時,UpdatePanel控制項的內容被渲染並且發送到用戶端。當回傳被觸發時,每個UpdatePanel的Mode屬性指明了這個UpdatePanel是總是被回傳還是在觸發器控制下回傳。當Mode被設定為Always的時候,這個UpdatePanel將會在任何一次回傳觸發時回傳,當Mode被設定為Conditional的時候,這個UpdatePanel只會在下面的情況發生時回傳:
1.    當串連到這個UpdatePanel的觸發器(trigger)觸發時
2.    當您強制調用Update方法時

Triggers集合的內容指定了可以引起UpdatePanel回傳的事件。您可以使用ControlValueTrigger對象使得當一個控制項的值改變時回傳,同時您還可以使用ControlEventTrigger對象使得當一個控制項的特定事件被觸發時引起回傳。

RenderMode屬性有兩個值,分別為Inline和Block,他們會分別將這個UpdatePanel渲染成<span>和<div>標記。

IsUpdating屬性是唯讀,bool類型,用來判斷UpdatePanel是否作為非同步回傳的一部分正在更新。它為true的條件是:
1.在部分回傳模式下當前請求正在被執行
2.當一個用戶端觸發器被觸發
3.Update方法被執行

在伺服器端,非同步回傳所引起的頁面生命週期時間和普通的回傳是一樣的,只不過UpdatePanel裡的內容需要被更新而被送到了瀏覽器而已。

注意
1.不能把檔案上傳控制項放入UpdatePanel裡,因為資料的傳輸與部分頁面更新相衝突。
2.ContentTemplate被定義為一個單一實例模板(single instance template)

UpdatePanel的聲明文法:
 1 <atlas:UpdatePanel
 2     ID="string"
 3     Mode="Always|Conditional"
 4     RenderMode="Block|Inline"
 5     runat="server"
 6 >
 7     <ContentTemplate>
 8         <!-- UpdatePanel content -->
 9     </ContentTemplate>
10     <Triggers>
11         <ControlValueTrigger
12             ControlID="string"
13             PropertyName="string"
14         />
15         <ControlEventTrigger
16             ControlID="string"
17             EventName="string"
18         />
19     </Triggers>
20 </atlas:UpdatePanel>


附加:UpdatePanel如果放入User Control或MasterPage裡的話,一定要注意ScriptManager的問題。此外,UpdatePanel的嵌套問題要注意Mode的設定和在讀取IsUpdating屬性時的取值問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.