В ASP.NET, как перехватить событие обратной передачи на стороне клиента - PullRequest
1 голос
/ 09 июня 2011

Я хочу запускать код для каждой обратной передачи на стороне клиента.Есть событие или что-то для этого?

Ответы [ 4 ]

3 голосов
/ 09 июня 2011

Если вы просто обрабатываете событие отправки формы, вы не обязательно поймаете каждый __doPostBack().Например, __doPostBack(), запускающий обновление UpdatePanel, не отправляет форму.

Один из способов убедиться, что вы знаете о каждом вызове __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 голос
/ 26 января 2012

Ответ Дейва Уорда почти сработал для меня, но по какой-то причине (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;
1 голос
/ 09 июня 2011

Asp.net работает так, что вся страница является формой. Поэтому, чтобы сделать что-то на стороне клиента перед отправкой формы (что на самом деле является событием обратной передачи), я бы прикрепил к событию отправки формы, вернул false, чтобы предотвратить отправку формы, выполнил ваш код на стороне клиента и затем отправил бы Форма с использованием JavaScript.

Вы можете легко сделать это с помощью jQuery: http://api.jquery.com/submit/

Дайте мне знать, если вам нужна дополнительная помощь.

0 голосов
/ 09 июня 2011

На каждой странице aspx, созданной ASP.NET, есть метод __doPostBack () javascript. Таким образом, вы можете использовать его

...