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

时间:2013-09-19 07:20:21

标签: c# javascript asp.net request

我是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
    }
}

令人惊讶的是,alert在点击第一个btn时弹出,而第二个btnStats则不会弹出。

我认为这个问题是因为btnStats没有触发请求引起的,但正如我所说,我是新手,我不明白为什么。并且操作正确完成,唯一不起作用的是在该脚本中完成的操作。有什么提示吗?

1 个答案:

答案 0 :(得分:0)

我认为这就是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
    }
}