У меня есть элемент управления пользователя, который можно использовать, например, в шаблоне элемента gridview, это означает, что элемент управления может быть или не находиться на странице при загрузке страницы. В случае, когда элемент управления находится внутри шаблона элемента, я буду отображать сетку через асинхронные обратные передачи (через панели обновления).
Сам элемент управления блокирует сценарии регистраторов, так как он зависит от сценариев javascript. Сначала я использовал
Page.ClientScript.RegistrerClientScriptBlock
Но это не работает с асинхронными обратными передачами (updatepanels), поэтому я затем попробовал то же самое с помощью ScriptManager, который позволяет мне регистрировать сценарии на странице после асинхронных обратных передач. большой!.
ScriptManager.RegisterClientScriptBlock
Однако ScriptManager (о чем я знаю) не имеет возможности видеть, есть ли уже сценарий на странице, поэтому я буду для каждой обратной передачи генерировать дубликаты блоков сценария, это, конечно, нежелательное поведение.
Я пробежался в Google и обнаружил, что могу вызвать метод Dispose () PageRequestManager, это действительно работает, поскольку он очищает сценарии, а затем добавляет их снова (это также решает мою проблему с удалением неиспользуемых блоков сценариев из удаленных элементы управления).
Sys.WebForms.PageRequestManager.getInstance().Dispose()
Однако, конечно, есть обратная сторона, так как я публикую здесь :). Метод Dispose () также размещает экземпляр на главной странице, что приводит к тому, что выполняющиеся там скрипты перестают работать после асинхронной обратной передачи (например, updateprogress).
Итак, есть ли способ проверить, существует ли уже сценарий на странице с помощью ScriptManager или любых других инструментов, которые не позволят мне вставить повторяющиеся сценарии? Кроме того, есть способ удалить определенные блоки скрипта (например, когда я удаляю элемент в шаблоне элемента).
Заранее большое спасибо.