Конкретный пример кода, который вы описываете, не работает с частичными постбэками, так как ClientScript.RegisterStartupScript()
записывает JS на страницу во время фазы построения вывода жизненного цикла запроса; тогда как частичная обратная передача обновляет только выбранную часть страницы через JavaScript (даже если на сервере создается разметка для всей страницы, включая сценарий запуска).
Чтобы максимально имитировать то, что вы описываете, вы должны включить элемент управления Literal внутри вашей UpdatePanel и при частичной обратной передаче установить свойство Text панели содержимого для сценария, который вы хотите запустить:
myLiteral.Text = "<script type=\"JavaScript\">doStuff();</script>";
IMO, более правильным способом является использование клиентского API для асинхронных обратных передач , чтобы зарегистрировать обработчик событий, запускаемый после завершения обратной передачи:
function endRequestHandler(sender, args) {
doStuff();
}
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler);
Если вам нужно передать информацию, сгенерированную во время обратной передачи, в обработчик, вы можете передать ее через скрытые поля и получить ее из DOM в вашем клиентском обработчике.