自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET AJAX UpdatePanel控件

開發(fā) 后端
本文介紹ASP.NET AJAX UpdatePanel控件,UpdatePanel 可以為一般的網(wǎng)頁帶來 AJAX 神奇的好處,但是它不能提供我們與 AJAX 正常關(guān)聯(lián)的高效性。

不論好壞,UpdatePanel控件都是 ASP.NET AJAX 社區(qū)所喜愛的。我說“好”,是因?yàn)?UpdatePanel 使部分頁面呈現(xiàn)變得相當(dāng)簡單,而說“壞”,是因?yàn)樗暮啽愫鸵子眯允且孕屎土钊颂湫苑堑膸挒榇鷥r(jià)的。

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

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

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

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

更新突出顯示

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

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

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

updatePanel 閃爍再多一點(diǎn),以便用戶不會(huì)錯(cuò)過重要的更新?

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

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

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

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

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

【編輯推薦】

  1. 淺析ASP.NET Web 安全性
  2. ASP.NET的Session State
  3. 淺析IsPostBack屬性ASP.NET
  4. ASP.NET構(gòu)架與安全機(jī)制
  5. 概述ASP.NET水晶報(bào)表
責(zé)任編輯:佚名 來源: 百度空間
相關(guān)推薦

2009-07-21 09:18:02

UpdatePanelASP.NET AJA

2009-07-29 13:43:52

UpdatePanelASP.NET

2009-07-20 13:54:31

ScriptManagASP.NET AJA

2009-07-21 17:18:26

UpdateProgrASP.NET AJA

2009-08-05 17:58:24

UpdatePanel

2009-07-28 16:21:03

Asp.net AjaAutoComplet

2009-07-22 13:08:55

拯救UpdatePanASP.NET MVC

2009-01-08 10:20:56

AutoCompletAjaxASP.NET

2009-07-21 17:27:12

UpdateProgrASP.NET AJA

2009-07-21 09:43:36

調(diào)用UpdatePanASP.NET

2009-07-24 13:41:15

ASP.NET AJA

2009-07-22 16:17:39

ASP.NET AJA

2009-07-22 16:11:43

ASP.NET AJA

2009-07-22 16:25:41

ASP.NET AJA

2009-07-22 16:05:34

ASP.NET AJA

2009-07-22 15:58:52

ASP.NET AJA

2009-07-31 13:24:43

ASP.NET AJA

2009-07-20 10:16:13

配置ASP.NET A

2009-07-28 09:02:32

asp.net aja

2009-08-04 10:43:59

ASP.NET控件開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)