Это точно такой же вопрос, как и этот без ответа от мая.
(правка) Примечание: этот пост, оставшийся без ответа, точно описывает поведение - дополнительные скрипты, добавляемые в <head>
ScriptManager.RegisterClientScriptBlock в usercontrol, в UpdatePanel, вызывают дубликаты. C # .NET 4.0. Страница структурирована так:
MasterPage
Page
UserControl1 (ascx) - loaded in code by Page
UpdatePanel
UserControl2 (ascx) - loaded in code by UserControl1
При первом добавлении сценария в тело, как и ожидалось. Код просто в UserControl2 OnInit:
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "myscript", script, true);
Я также пытался ссылаться на «this» вместо страницы, что на самом деле не имеет смысла, так как я не хочу, чтобы одни и те же ключи скрипта дублировались на странице, если usercontrol загружается на страницу несколько раз, но это все равно не работал.
После частичной обратной передачи сценарий добавляется снова - но, как ни странно, в <head>
страницы, а не в теле, и, что интересно, не хватает обычной оболочки //<![CDATA[...//]]>
, которую обычно добавляет asp.net.
Другой скрипт, добавленный UserControl1, дублируется точно так же после частичной обратной передачи.
Кто-нибудь знает, почему это происходит?