在添加多个Web用户控件时,会发生错误“只能将一个ScriptManager实例添加到页面中”

时间:2012-07-16 07:46:31

标签: asp.net exception webforms controls scriptmanager

我创建了ajax date extender的用户控件“Calendar”以及用于获取日期的文本框。现在我尝试动态地为我的表中填充的所有行创建此控件。它给出了以下错误: - 只能将一个ScriptManager实例添加到页面中。

这是代码: -

tc = new TableCell();
            tc.Style["width"] = "15%";
            Calendar1 = (ASP.Calendar)LoadControl("../Calendar.ascx");
            Calendar1.ID = "tbDate" + Convert.ToString(_id);
            tc.Controls.Add(Calendar1);
            tr.Cells.Add(tc);
            tc.Dispose();
            tc = null;

我已经宣布了一个全局变量: - public ASP.Calendar Calendar1;

提前感谢您的建议。

2 个答案:

答案 0 :(得分:0)

您已在页面中多次包含脚本管理器,可能在用户控件本身中。

答案 1 :(得分:0)

您需要在Web用户控件中使用ScriptManagerProxy组件,而不是使用完整的ScriptManager。 ScriptManagerProxy是为了这种用途而创建的。

“启用嵌套组件(如内容页面和用户控件),以便在已在父元素中定义ScriptManager控件时向页面添加脚本和服务引用。” - http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanagerproxy.aspx

因此,基本上确保在调用页面上使用ScriptManager并使用Calendar.ascx Web用户控件中的ScriptManagerProxy组件。

如果你的设计真的不允许,那么创建第二个版本的Calendar.ascx只能用作嵌套控件呢?