¿Por qué los controles de usuario creados dinámicamente desaparecen cuando los controles no realizan devoluciones de datos completas?

Según mis entendimientos actuales, cuando tienes un control UpdatePanel no hay devolución completa. Por lo tanto, si agrego dinámicamente controles de usuario personalizados y ellos tienen UpdatePanels que están actualizados en su código, no deberían desaparecer de la página en la que están cargados, ¿verdad? Aparentemente no. Hice un proyecto simple para probar y aún así mis controles dinámicos desaparecen cuando se hace clic a pesar de que no deberían generar una devolución de datos completa. Tengo una página aspx que carga los controles:

<code><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TESTmultipleScriptManagerControls.aspx.cs" Inherits="myPlayground.TESTmultipleScriptManagerControls" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

    <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
    </ContentTemplate>
    </asp:UpdatePanel>

</div>
</form>
</body>
</html>
</code>

Con el siguiente código detrás:

<code>protected void Button1_Click(object sender, EventArgs e)
    {

        TESTcontrol1 temp = LoadControl("TESTcontrol1.ascx") as TESTcontrol1;
        PlaceHolder1.Controls.Add(temp);
        TESTcontrol1 temp2 = LoadControl("TESTcontrol1.ascx") as TESTcontrol1;
        PlaceHolder1.Controls.Add(temp2);

    }
</code>

Y un simple control de usuario:

<code><%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TESTcontrol1.ascx.cs" Inherits="myPlayground.TESTcontrol1" %>
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
</asp:ScriptManagerProxy>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">

<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</code>

Con el siguiente código detrás:

<code>protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = System.DateTime.Now.ToString();
    }
</code>

¿Alguna idea sobre por qué los controles están desapareciendo aunque no debería haber una activación de devolución de datos?

Respuestas a la pregunta(2)

Su respuesta a la pregunta