溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ASP.NET中如何使用 UpdatePanel控件

發(fā)布時間:2021-07-15 15:26:01 來源:億速云 閱讀:212 作者:Leah 欄目:編程語言

ASP.NET中如何使用 UpdatePanel控件,針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

UpdatePanel 可以為一般的網(wǎng)頁帶來 AJAX 神奇的好處,但是它不能提供我們與 AJAX 正常關(guān)聯(lián)的高效性。例如,您是否知道,當 UpdatePanel控件對服務(wù)器執(zhí)行異步 AJAX 回調(diào)以更新其內(nèi)容時,這個請求包含了常規(guī) ASP.NET 回發(fā)所包含的一切,其中還包括視圖狀態(tài)呢?大多數(shù)開發(fā)人員會以為 AJAX 取消了視圖狀態(tài)。而 UpdatePanel 的 AJAX 品牌卻并非如此。

如果您準備使用 UpdatePanel控件,您需要清楚您在準備干什么。在許多情況下,從性能的角度而言,應(yīng)用程序***是不使用 UpdatePanel,而是使用對 WebMethods 或頁面方法的異步調(diào)用。這樣做可能會大幅度降低網(wǎng)絡(luò)傳輸中的數(shù)據(jù)量。但是,它也是一個根本轉(zhuǎn)變,在這里 UI 更新需要由開發(fā)人員使用該頁面上的 JavaScript 來進行顯式處理。

此外,ASP.NET AJAX 論壇上到處都有關(guān)于自定義 UpdatePanel 的提問。其實,只要您了解為 UpdatePanel 提供客戶端支持的 Microsoft? AJAX Library 中的 PageRequestManager、JavaScript 類,這里面許多問題就可以迎刃而解。

既然已經(jīng)提供了 ASP.NET AJAX,我想進一步檢查一下 UpdatePanel,從而進一步了解您可以如何對其進行自定義和優(yōu)化,甚至在沒有它的情況下如何運行。這恰恰也是本期專欄包含的全部內(nèi)容。

更新突出顯示

有時候您無法幫助 Microsoft 的開發(fā)人員,而只能對他們表示遺憾。如果他們不能將工作做得足夠好,就會遭到公眾的抨擊。然而,有時候他們的工作做得很出色,也會遭到抨擊。例如,我最近收到了一位客戶的電子郵件,抱怨 ASP.NET AJAX UpdatePanel 運行得有點過頭了。

UpdatePanel 使 ASP.NET 頁面回發(fā)到服務(wù)器,并將它變?yōu)榱鲿?、無閃爍的更新時出現(xiàn)閃光和閃爍變得極其簡單。UpdatePanel 可以通過將回發(fā)轉(zhuǎn)換成異步回調(diào)(XML-HTTP 請求),以及使用客戶端上的 JavaScript 以刷新由 UpdatePanel控件封裝的頁面的一部分來發(fā)揮它的魔力。閃光和閃爍會消失,因為瀏覽器不會將該頁面重新繪制成與它在回發(fā)期間的一樣。

客戶的抱怨是,用戶有時候不會注意到頁面的那個部分已經(jīng)更新了新內(nèi)容。他的問題很簡單:ASP.NET AJAX 團隊的工作人員是否能使

updatePanel 閃爍再多一點,以便用戶不會錯過重要的更新?

不幸的是,ASP.NET AJAX 團隊可能對制造 UpdatePanel 閃爍沒什么興趣。畢竟,消除閃爍才是發(fā)明 UpdatePanel 的初衷。但值得高興的是,您可以在瀏覽器中使用 AJAX 的一些神奇功能,以吸引對已更新的 UpdatePanel 的注意。秘訣在于 Microsoft AJAX Library(由客戶端一半的 ASP.NET AJAX 組成的 JavaScript 類的庫)中的 Sys.WebForms.PageRequestManager 類。PageRequestManager 可以管理由 UpdatePanel 啟動的異步回調(diào)。它還負責在異步回調(diào)完成后更新 UpdatePanel 內(nèi)的內(nèi)容。

PageRequestManager 可以在更新前和更新后激發(fā)瀏覽器中的事件。您可以將 JavaScript 中的這些事件關(guān)聯(lián)起來,并運行可以提醒用戶注意更新內(nèi)容的代碼。關(guān)鍵事件被命名為 pageLoaded.此事件每次都會激發(fā)瀏覽器中的頁面加載(它類似 Page_Load in ASP.NET)。它每次還會激發(fā)代表 UpdatePanel控件完成而啟動的異步回調(diào),并且會更新這個 UpdatePanel 中的內(nèi)容。您可以使用兩行代碼(可以合并為一行)注冊 pageLoaded 事件的 JavaScript 處理程序:

var prm = Sys.WebForms.PageRequestManager.getInstance();prm.add_pageLoaded(pageLoaded);

***行獲得對該頁面的 PageRequestManager 對象的引用。第二行注冊名為 pageLoaded 的 JavaScript 函數(shù),作為 pageLoaded 事件的處理程序。

調(diào)用時,pageLoaded 事件處理程序會收到一個 Sys.WebForms.PageLoadedEventArgs 類型的參數(shù),它是 Microsoft AJAX Library 中的另一個類。PageLoadedEventArgs 包含一個 get_panelsUpdated 方法,您可以調(diào)用該方法來枚舉所有的 UpdatePanel(如果有),其內(nèi)容剛剛已更新。在默認情況下,UpdatePanel 就是客戶端上的 DIV,因此您可以使用 JavaScript 來使該 DIV 閃光,突出顯示它,或?qū)λ鼒?zhí)行任何您想要的操作,以提醒用戶注意它。

關(guān)于ASP.NET中如何使用 UpdatePanel控件問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI