【发布时间】:2010-11-09 10:57:55
【问题描述】:
我想在我的 UserControl 中使用 UpdatePanel。问题是放置控件的 .aspx 页面将没有 ScriptManager。我需要在 UserControl 中创建 ScriptManager。但是,如果使用 UserControl,在页面上说两次,那么放置 ScriptManager 将不起作用,因为您只能初始化 ScriptManager 一次。
在我需要 ScriptManager 的其他用户控件中(我使用的是 AJAX 工具包扩展),我能够使用此代码:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
Page.Init += new EventHandler(Page_Init);
}
void Page_Init(object sender, EventArgs e)
{
if (Page.Form != null && ScriptManager.GetCurrent(Page) == null)
Page.Form.Controls.AddAt(0, new ScriptManager());
}
..效果很好,但不适用于 UpdatePanel 案例。
注意,我没有使用母版页
(我正在考虑但不知道该怎么做的另一种方法是在 UpdatePanel 中以编程方式创建 UserControl。)
【问题讨论】:
-
只是一面没有,代码有点“双重”。您重写 OnInit 方法并添加一个 Init 事件处理程序。只需将 Page_Init 中的代码放在重写的 OnInit 中即可?
标签: asp.net ajax updatepanel user-controls scriptmanager