导致'无法取消注册UpdatePanel'错误的原因是什么?

时间:2008-10-27 01:48:27

标签: asp.net asp.net-ajax updatepanel

我有一个包含UpdatePanel的UserControl。当我把它放在页面上时,它会抛出以下错误:

  

无法取消注册带有ID的UpdatePanel   'ReviewContentUpdatePanel'因为它   没有注册   ScriptManager的。如果这可能会发生   UpdatePanel已从中删除   控制树,后来再次添加,   这是不受支持的。参数   name:updatePanel

ReviewContentUpdatePanel是更新面板的名称&它没有被删除或添加到代码中,它存在于aspx页面中,不会被删除。有没有人遇到过这个?

8 个答案:

答案 0 :(得分:5)

使用Clear method清除使用UpdatePanel的Controls集合时,或使用Remove method删除特定UpdatePanel时,会发生此错误。

这些方法的触发器可能是包含UpdatePanel的控件的CreateChildControls method的实现。通常,在此方法的顶部调用Controls.Clear(),如果重复调用此方法,则以干净的平板开始。

答案 1 :(得分:4)

您是否在代码中移动控件?如果是这样,请查看here,看看这是否能解决您的问题。

答案 2 :(得分:3)

我曾经发生过一次此事。要修复它,我只是将其删除然后重新创建它,问题就消失了。

答案 3 :(得分:3)

我希望这可以帮助别人,因为它让我疯了。在这里和其他地方找到各种信息的各种信息之后,我终于想出了以下修复。请注意,我不是在这里或其他任何地方动态创建此更新面板,并且大多数信息都与动态创建此控件有关,我不是。

我在使用脚本管理器的母版页继承的页面上使用的Web用户控件中使用了更新面板。我不知道这个组合是否是造成它的原因,但这就是我修复它的方法(在使用更新面板的Web用户控件中):

protected override void OnInit(EventArgs e)
{
    ScriptManager sm = ScriptManager.GetCurrent(this.Page);
    MethodInfo m = (
    from methods in typeof(ScriptManager).GetMethods(
        BindingFlags.NonPublic | BindingFlags.Instance
        )
    where methods.Name.Equals("System.Web.UI.IScriptManagerInternal.RegisterUpdatePanel")
    select methods).First<MethodInfo>();

    m.Invoke(sm, new object[] { updatePanel });
    base.OnInit(e);
}

答案 4 :(得分:1)

在您的标记中,确保您已为其两个UpdatePanels以及其父层次结构中的每个runat =“server”控件指定了一个ID。

答案 5 :(得分:0)

您是否尝试在用户控件中包含ScriptManagerProxy?

答案 6 :(得分:0)

尝试删除UserControl的scriptproxy。在这种情况下,您的页面上只有一个ScriptManager。

答案 7 :(得分:0)

这是一个很长的镜头,但我已经体验过AJAX扩展,特别是更新面板,其中子控件引发的错误表现为更新面板抛出的不同错误。我确实看到由于子控件中的错误而抛出此特定错误的引用:

http://msmvps.com/blogs/shareblog/archive/2009/03/11/cannot-unregister-updatepanel-with-id-since-it-was-not-registered-with-the-scriptmanager-and-moss.aspx

不确定您是否属于这种情况,但由于这个原因,我花了很多时间追逐错误的错误。