这与五月份的这个未解决的问题完全相同。
(编辑)注意:这个未解决的帖子完全描述了这种行为——在用户控件中,通过ScriptManager.RegisterClientScriptBlock在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”而不是页面来引用,但这并没有什么意义,因为如果用户控件在页面上加载多次,我不希望相同的脚本键重复出现在页面上,但无论如何都没有起作用。
在部分回发后,脚本会再次添加 - 但奇怪的是在页面的中,而不是body中,并且有趣的是,缺少asp.net通常添加的正常的//<![CDATA[...//]]>包装器。
另一个由UserControl1添加的脚本在部分回发后以完全相同的方式被复制。
有人知道为什么会发生这种情况吗?