在 .NET Web 应用程序中添加第二个 endRequestHandler

本文关键字:添加 第二个 endRequestHandler 应用程序 NET Web | 更新日期: 2023-09-27 18:31:59

我是C#语言的新手,在尝试扩展已经存在且非强制性的.NET Web应用程序时,我感到非常迷茫。

该应用程序有一个带有按钮的Web User Control,单击该按钮时,通过 .ascx 中的这段 JavaScript 代码刷新其内部内容:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
function endRequestHandler(sender, args) {
    var btnId = '<%= btn.ClientID %>'
    if (sender._postBackSettings.sourceElement.id == btnId) {
        // loads a popup with the new content
    }
}

这非常有效。当我尝试添加一个几乎相同的新Web User Control时,问题就来了,但当然是通过不同的按钮并加载不同的内容。我在前面和后面复制了代码结构,但我无法执行第二个endRequestHandler

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandlerStats);
function endRequestHandlerStats(sender, args) {
    alert("I'm here!");
    var btnStatsId = '<%= btnStats.ClientID %>'
    if (sender._postBackSettings.sourceElement.id == btnStatsId) {
        // loads another popup
    }
}

令人惊讶的是,单击第一个btn时会弹出alert,但单击第二个btnStats时不会弹出。

我认为问题是由于btnStats没有触发请求而引起的,但正如我所说,我是新手,我不知道为什么。并且操作正确完成,唯一不起作用的是该脚本中所做的操作。请问有什么提示吗?

在 .NET Web 应用程序中添加第二个 endRequestHandler

我相信

这就是 if 条件的用途 - 它是检查单击了哪个按钮。JavaScript 的事件模型不允许附加多个处理程序(至少不是没有一些额外的工作),所以这可能是下一个最好的事情。

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
function endRequestHandler(sender, args) {
    var btnId = '<%= btn.ClientID %>'
    var btnStatsId = '<%= btnStats.ClientID %>'
    if (sender._postBackSettings.sourceElement.id == btnId) {
        // loads a popup with the new content
    } 
    else if (sender._postBackSettings.sourceElement.id == btnStatsId) {
        // loads another popup
    }
}