【问题标题】:While adding multiple web user control, an error occurs "only one instance of a ScriptManager can be added to the page"添加多个Web用户控件时,出现“页面中只能添加一个ScriptManager实例”的错误
【发布时间】:2012-07-15 01:11:23
【问题描述】:

我创建了一个 ajax 日期扩展器的用户控件“日历”以及一个用于获取日期的文本框。现在我试图为我的表中填充的所有行动态创建这个控件。它给出了以下错误: - 页面中只能添加一个 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;

提前感谢您的建议。

【问题讨论】:

  • 从 calendar.ascx 中移除多余的 ScriptManager
  • 请显示您日历的代码示例

标签: asp.net exception webforms controls scriptmanager


【解决方案1】:

您需要在 Web 用户控件中使用 ScriptManagerProxy 组件,而不是使用成熟的 ScriptManager。 ScriptManagerProxy 就是为您想要的这种用途而创建的。

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

所以基本上确保您在调用页面本身上使用 ScriptManager 并在 Calendar.ascx Web 用户控件中使用 ScriptManagerProxy 组件。

如果您的设计确实不允许这样做,如何创建第二个版本的 Calendar.ascx 仅用作嵌套控件?

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2017-09-04
      • 1970-01-01
      相关资源
      最近更新 更多