This error is a pesky one. You will most likely encounter it when you’re trying to dynamically load an UpdatePanel within an itemTemplate in a datagrid, or some similar control with dynamically created items. In my case: in a datagrid, and specifically within an item template in that grid.

 

 

 

 

Here is the solution that has worked for me:

1) Hook into the Unload event of the updatepanel like so (in ASPX or ASCX file):

<asp:UpdatePanel runat="server" ID="updatePanel" OnUnload="updatePanel_Unload"> <ContentTemplate> </ContentTemplate> </asp:UpdatePanel>

2) Now in your code behind, use this implementation of Unload.
(*You will need a reference to System.Linq and System.Reflection if you don’t already have one)

protected void updatePanel_Unload(object sender, EventArgs e)
{
    /* Cast sender as an updatePanel, and use reflection to invoke * * the page's scriptmanger registerUpdatePanel() method * * */ 
UpdatePanel aUpdatePanel = sender as UpdatePanel;

    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(ScriptManager.GetCurrent(aUpdatePanel.Page), new object[] { aUpdatePanel });
}

Executing the reflection code to invoke the scriptManager’s registerUpdatePanel() method should fix your problem and you’re off and running again!