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

时间:2011-06-09 08:44:24

标签: javascript asp.net client postback

我想在客户端的每个回发上运行代码。是否有事件或其他事情要做?

4 个答案:

答案 0 :(得分:3)

如果您只是处理表单的提交事件,则不一定会捕获每个__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。

答案 1 :(得分:1)

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

您可以轻松地使用jQuery执行此操作:http://api.jquery.com/submit/

如果您需要更多帮助,请与我联系。

答案 2 :(得分:1)

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;

答案 3 :(得分:-1)

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