Регистрация блоков клиентских скриптов не сохраняется в ScriptManager через какой-либо скрытый механизм.То есть, если вы посмотрите на GetRegisteredClientScriptBlocks()
, то всегда будет пустым после обратной передачи (асинхронной или другой).Однако, хотя ClientScriptManager может не знать о том, что сценарий уже был добавлен в неасинхронно обновляемую часть страницы, все, что было добавлено, будет, конечно же, после асинхронной обратной передачи.Вам нужно каким-то образом отслеживать свои регистрации в своем коде и использовать логику, чтобы зарегистрировать их только один раз.
Какова ваша ситуация?У вас есть пользовательский контроль или что-то, что должно зарегистрировать скрипт?Вы можете либо проверить Page.IsPostBack
, и зарегистрироваться, только если это не обратная передача, или если это недостаточно хорошо (потому что элемент управления может быть загружен в первый раз при обратной передаче), а затем установить флаг в ViewState, чтобы он знал, когда он ужезарегистрировал свой скрипт.