Так уж получилось, что одна, на мой взгляд важная тема, не была затронута ни на одном из моих докладов по Microsoft ASP.NET AJAX. Поэтому вкратце расскажу о ней здесь.
Дело в том, что асинхронный запрос, выполненный не вручную, а с помощью UpdatePanel triggers, имеет свой собственный цикл событий, именуемый Client Page Life-cycle. Выглядит он так:

Все события Client Page Life-cycle - это события синглтона PageRequestManager. Каждое событие служит определенной цели.
- initializeRequest может быть использован для отмены запроса (например в случае, если в данный момент некоторый запрос уже выполняется).
- beginRequest вызывается непосредственно перед отправкой запроса на сервер, поэтому разумно использовать его для запуска прелодера.
- Свойство PageLoadingEventArgs.panelsDeleting (событие pageLoading) содержит массив панелей, которые будут удалены в результате постбэка.
- pageLoaded можно использовать для получения информации о панелях, которые были обновлены или созданы.
- EndRequestEventArgs содержит информацию об ошибке (при условии что ошибка есть), а также ссылку на экземпляр объекта Sys.Net.WebRequestExecutor, использовавшегося при данном запросе.