是否有一个全球性的;“onRequestComplete”;使用ASP.Net更新面板时发生的事件?

是否有一个全球性的;“onRequestComplete”;使用ASP.Net更新面板时发生的事件?,asp.net,asp.net-ajax,updatepanel,Asp.net,Asp.net Ajax,Updatepanel,我有一个带有公共ShowWaitingDialog属性的母版页。当设置为true时,我只是在提交表单时显示一个模式“请等待…”覆盖。这是通过使用以下命令注册名为ShowWaitingDialog()的客户端函数来完成的: Page.ClientScript.RegisterOnSubmitStatement(Page.GetType(), "ShowWaitingDialog", "ShowWaitingDialog()"); 作为补充说明,如果链接到可能需要一段时间才能加载的页面,我还有一个

我有一个带有公共ShowWaitingDialog属性的母版页。当设置为true时,我只是在提交表单时显示一个模式“请等待…”覆盖。这是通过使用以下命令注册名为ShowWaitingDialog()的客户端函数来完成的:

Page.ClientScript.RegisterOnSubmitStatement(Page.GetType(), "ShowWaitingDialog", "ShowWaitingDialog()");
作为补充说明,如果链接到可能需要一段时间才能加载的页面,我还有一个编码器可以使用的功能:

public void AttachWaitingDialog(HyperLink HyperLinkControl){
if (this.ShowWaitingDialog)
    HyperLinkControl.Attributes.Add("onclick", "ShowWaitingDialog();");}
在页面上引入UpdatePanel之前,这些都可以正常工作。当回发发生在更新面板内时,该对话框将正确显示。然而,当请求完成时,它永远不会消失。我希望Microsoft ajax框架在发出更新面板请求时会使用某种全局完整事件。这样我可以在执行时关闭模式溢出。有吗


我还没有尝试过,但是我想我可以使用ScriptManager来注册一个启动脚本,它会隐藏模式覆盖,但是我想知道是否还有其他方法。

我不确定是否使用UpdatePanel,但是您可以看看Global.asax中的Application_EndRequest方法。您可以使用Javascript并使用Microsoft Ajax framework提供的PageRequestManager客户端api

<script type='text/javascript'>

var pageMgr = Sys.WebForms.PageRequestManager.getInstance();

pageMgr.add_beginRequest(BeforeAjaxRequest);
pageMgr.add_endRequest(AfterAjaxRequest);

function BeforeAjaxRequest(sender, args)
{
 alert('MyReqeustStart');
}

function AfterAjaxRequest(sender, args)
{
 alert('MyReqeustEnd');
}

</script>

var pageMgr=Sys.WebForms.PageRequestManager.getInstance();
pageMgr.add_beginRequest(在AjaxRequest之前);
pageMgr.add_endRequest(在AjaxRequest之后);
函数BeforeAjaxRequest(发送方,参数)
{
警报(“MyReqeustStart”);
}
函数AfterAjaxRequest(发送方,参数)
{
警报(“myrequestend”);
}
详情如下:

谢谢,这正是我想要的。工作起来很有魅力。