我有一个包含UpdatePanel的UserControl。当我把它放在页面上时,它会抛出以下错误:
无法取消注册带有ID的UpdatePanel 'ReviewContentUpdatePanel'因为它 没有注册 ScriptManager的。如果这可能会发生 UpdatePanel已从中删除 控制树,后来再次添加, 这是不受支持的。参数 name:updatePanel
ReviewContentUpdatePanel
是更新面板的名称&它没有被删除或添加到代码中,它存在于aspx页面中,不会被删除。有没有人遇到过这个?
答案 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扩展,特别是更新面板,其中子控件引发的错误表现为更新面板抛出的不同错误。我确实看到由于子控件中的错误而抛出此特定错误的引用:
不确定您是否属于这种情况,但由于这个原因,我花了很多时间追逐错误的错误。