Pour mon projet, je dois charger un .ascx selon le choix fait dans un RadioButtonList sans Postback

Seulement, c'est pas aussi facile que ca en a l'air.

Pour l'AJAX, j'ai déjà fait des essai et j'utilises ces méthodes (prises sur ce site :p)

function getXhr()
{
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject)
{ // Internet Explorer
try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else
{ // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}

function bindVente()
{
var xhr = getXhr();
/* var i = 0;
while (document.getElementById('<%=ActivityTypeRadioButtonList1.ClientID + "_"%>'+i).checked == false)
{
i++;
}*/

// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function()
{
document.getElementById('<%=PanelUpdateVente.ClientID%>').innerHTML = "<img id='img1' src='../../../images/ajax-loader.gif'>";

alert(xhr.readyState);
alert(xhr.status);
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200) {

leselect = xhr.responseText;
alert(xhr.responseText);
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('<%=PanelUpdateVente.ClientID%>').innerHTML = leselect;
}
}

// Ici on va voir comment faire du post
xhr.open("POST","Activity.aspx",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments

id = document.getElementById('<%=ActivityTypeRadioButtonList1.ClientID + "_"%>'+1).value
xhr.send("Vente="+id);
}
Dans le Page_load de mon .aspx je récupère le paramètre passé en POST

if (Request.Params["Vente"] != null)
{
ManageActivityInVente.isInActivity = true;
ManageActivityInVente.FirstLoad = true;
ManageActivityInVente.ActivityTypeId = long.Parse(Request.Params["Vente"]);

//HtmlTextWriter htw = new HtmlTextWriter(Response.Output);
//this.RenderControl(this.CreateHtmlTextWriter(Response.Output));

ManageActivityInVente.GetHTMLFromActivity();

//Response.ClearContent();
//Response.ClearHeaders();
//Response.Flush();
//Response.Close();
}
Et dans mon .ascx, je créé une méthode qui devrait injecter dans le Response.Output le code HTML du composant

public void GetHTMLFromActivity()
{
//Response.Clear();
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();

HtmlTextWriter htw = new HtmlTextWriter(Response.Output);


ManageActivityInVente.RenderControl(htw);

Response.Flush();
Response.Close();


}
Seulement, je passes bien les 4 étapes mais le status retourné est une erreur 500

donc, est ce possible de renvoyer un .ascx en HTML que je l'intègre dans ma page ?