通過使用頁上的NET UpdatePanel Web 服務器控件,可以在 ASP.NET 中實現異步回發。 UpdatePanel 控件不再需要在每次回發時刷新整個頁面,這樣將改善用戶體驗。在浏覽器中, Microsoft AJAX Library 中的Sys.WebForms.PageRequestManager 類在客戶端頁生命周期中管 理事件以進行異步回發。可以通過處理 PageRequestManager 類公開的事件來自定義異步回發 出現的方式。
先決條件
若要在您自己的開發環境中實現這些過程,您需要:
Microsoft Visual Studio 2005 或 Microsoft Visual Web Developer 速成版。
一個支持 AJAX 的ASP.NET 網站。
創建取消回發的腳本
首先,創建用於管理浏覽器中的異步回發的ECMAScript (JavaScript) 代碼。
創建 JavaScript 代碼以取消回發
在 ASP.NET 網站中,添加新的JScript 文件並將其命名為 CancelPostback.js。
向文件中添加以下腳本:
var divElem = 'AlertDiv';
var messageElem = 'AlertMessage';
Sys.Application.add_load(ApplicationLoadHandler)
function ApplicationLoadHandler(sender, args)
{
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest (CheckStatus);
}
function CheckStatus(sender, args)
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'CancelRefresh') {
prm.abortPostBack();
}
else if (prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'RefreshButton') {
args.set_cancel(true);
ActivateAlertDiv('visible', 'Still working on previous request.');
}
else if (!prm.get_isInAsyncPostBack() & args.get_postBackElement().id == 'RefreshButton') {
ActivateAlertDiv('visible', 'Retrieving headlines.');
}
}
function ActivateAlertDiv(visString, msg)
{
var adiv = $get(divElem);
var aspan = $get(messageElem);
adiv.style.visibility = visString;
aspan.innerHTML = msg;
}
if(typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded ();