There are probably dozens of reasons for not doing it this way, but just by initializing the page, adding user control, then executing and uploading the resulting HTML code wherever this may happen, there is (in my simple-minded view) stunningly fast and fun, that I just have to mention this ...
Skip UpdatePanels, just use the shortcut, plain old range, or what about the abbreviation ...
Using client-side jQuery:
$('#SomeContainer').Load("default.aspx?What=GimmeSomeSweetAjax");
ServerSide:
if(Request.QueryString["What"]==GimmeSomeSweetAjax)
{
Page page = new Page();
Control control = (Control)LoadControl("~/.../someUC.ascx");
StringWriter sw = new StringWriter();
page.Controls.Add(control);
Server.Execute(page, sw, false);
Response.Write(sw.ToString());
Response.Flush();
Response.Close();
}
, ; -)