ASP — выполнение javascript кода после обработчика asp:Button onClick?
Добрый день.
Есть кнопка asp:Button, в событии onClientClick запускается js-анимация, в событии onClick на сервере генерируется файл. Можно ли как-нибудь определить окончание события onClick на клиенте, чтобы остановить анимацию?
На первый взгляд - нет в силу специфики жизненного цикла WebForms.
Если чуть задуматься - событие onclick вызывается через Ajax? Тогда на клиентское событие onSuccess останавливайте что хотите.
Если событие вызывается синхронно - то в чем проблема? там страница перезагрузиться должна.
Страница перезагружается, если браузер переходит на другой урл. Но в событии onClick генерится файл, пишется в тело запроса и возвращается через response.End(); При этом страница не перезагружается, а выдается диалог на сохранение файла. И анимация продолжает висеть.
Alexeytur, Вы сейчас хотите спрятаться за абстракцией ASP WebForms от простейшей архитектуры клиент-сервера. Запрос на сервер уходит либо синхронно, либо асинхронно. По вашему описанию - запрос уходит асинхронно, а значит на клиентской стороне есть обработчики onSuccess таких запросов. Может не стоит слишком глубоко не углубляться в WebForms? Есть заметный риск научиться плохому и невостребованому. WebMVC/WebApi гораздо прозрачнее.
Дмитрий Ковальский,
Думаю, запрос всё-таки делается синхронно. Если я правильно понимаю, при событии onClick делается POST-запрос на текущую страницу. Если мы в обработчике не производим манипуляций с объектом response, то происходит обновление текущей страницы в браузере. Если мы пишем и делаем response.End, то обновления страницы не происходит.
По поводу WebForms - проект мне достался от уволившегося программиста, до этого я с вебом дел не имел. Проект довольно большой, а правки довольно редки, поэтому его переписывать врядли нужно.