Ok, after creating my own test website and tinkering around, here's what I got to work:
<%@ Control Language="C#"
This is Test Control 2
<%@ Page Language="C#"
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="Server" />
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="Server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server"
<asp:Button ID="Button1" runat="server"
<br /><br />
<asp:Panel runat="server" ID="Panel1" />
protected void Page_Load(object sender, EventArgs e)
var TestControl1 = LoadControl("Controls\\TestControl1.ascx");
protected void Button1_Click(object sender, EventArgs e)
var TestControl2 = LoadControl("Controls\\TestControl2.ascx");
I think it's due to how ASP.NET handles controls that are added dynamically to the UpdatePanel. This question shows more insight into this issue that may be helpful to you.
@MikeKiemen If you wouldn't mind upvoting this since you did find it useful enough to implement into your edited question. Upvotes aren't just for finished correct answers, but for useful answers and rewarding those for the time they spent on your question. I did spend a couple hours between the 2 answers I posted. It would be much appreciated. =D