繁体   English   中英

在 ASP.NET 中,如何在客户端挂钩回发事件

[英]In ASP.NET, how to hook postback event on clientside

我想在客户端的每个回发上运行一个代码。 有什么活动或什么可以做到吗?

如果您只是处理表单的提交事件,则不一定会捕获每个__doPostBack() 例如,触发 UpdatePanel 刷新的__doPostBack()不会提交表单。

您可以确保了解每次调用 __doPostBack() 的一种方法是重新定义它:

var oldDoPostBack = __doPostBack;

function __doPostBack(eventTarget, eventArgs) {
  // Your code here, which will execute before __doPostBack,
  //  and could conditionally cancel it by returning false.

  oldDoPostBack(eventTarget, eventArgs);
}

只需确保在页面末尾附近或在 document.ready 类型事件中执行此操作,这样您就可以确保在尝试执行此操作时定义了 __doPostBack。

asp.net 的工作方式是整个页面是一个表格。 因此,要在提交表单之前在客户端做一些事情(这实际上是回发事件),我会附加到表单提交事件,返回 false 以防止提交表单,执行客户端代码,然后提交使用 javascript 形成。

您可以使用 jQuery 轻松做到这一点: http://api.jquery.com/submit/

如果您需要更多帮助,请告诉我。

Dave Ward 的回答几乎对我有用,但无论出于何种原因(Telerik?),它创建了对 __doPostBack 的无限循环调用。 因此,我使用了以下代码:

function __doPostBack_Custom(eventTarget, eventArgs) {
    // Your code here, which will execute before __doPostBack,
    //  and could conditionally cancel it by returning false.

    oldDoPostBack(eventTarget, eventArgs);
}
var oldDoPostBack = window.__doPostBack;
window.__doPostBack = __doPostBack_Custom;

每个 aspx 页面上都有一个 javascript __doPostBack() 方法,由 ASP.NET 生成。 所以你可以使用它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM