我认为您确实应该使用RegisterStartupscript 的Control重载。
我在服务器控件中尝试了以下代码:
[ToolboxData("<{0}:alertControl runat=server></{0}:alertControl>")]public class alertControl : Control{ protected override void onInit(EventArgs e){ base.onInit(e); string script = "alert("Hello!");"; scriptManager.RegisterStartupscript(this, GetType(), "ServerControlscript", script, true); }}然后在我的页面中,我有:
protected override void onInit(EventArgs e){ base.onInit(e); Placeholder1.Controls.Add(new alertControl());}其中Placeholder1是更新面板中的占位符。占位符上还有几个其他控件,包括按钮。
这的行为完全符合您的预期,每次加载页面或导致更新面板更新时,我都会收到一条警告,说“ Hello”。
您可能要查看的另一件事是挂接到在更新面板请求期间触发的某些页面生命周期事件:
Sys.WebForms.PageRequestManager.getInstance() .add_endRequest(EndRequestHandler);
该PageRequestManager endRequestHandler事件触发每一个更新面板完成其更新时间-这将让你调用一个方法来建立你的控制。
我唯一的其他问题是:
- 您的脚本实际上在做什么?
- 大概您可以在页面底部的HTML中看到脚本(恰好在



