Cargue un .Net WebControl con JQuery y AJAX

Sé que esta es una especie de pregunta conceptual, pero quiero poder agregar .Net WebControls a una página según la entrada del usuario. Quiero que estos controles sean WebControls y UserControls que se generan desde el servidor. No estoy realmente seguro de cómo hacer esto mientras me aseguro de que los controles se rendericen completamente. Sé que puedo realizar fácilmente solicitudes al servidor desde JQuery y luego agregar el marcado devuelto a la página sin ningún problema. ¿Hay alguna forma en que pueda generar el marcado completo para un WebControl/UserControl para pasarlo a JQuery a través de AJAX para poder representarlo en la página?

preguntado el 03 de mayo de 12 a las 19:05

Supongo que está utilizando WebForms. -

No tengo muy claro a qué se aplica WebForms, pero estoy usando el espacio de nombres System.Web.UI.WebControls. -

Me refiero a ASP.NET WebForms vs ASP.NET MVC. Esto es trivialmente fácil en MVC. -

Sí, estoy usando WebForms -

1 Respuestas

Debe usar AJAX para realizar una devolución de llamada asincrónica a la página. Si desea activar esto desde el cliente, probablemente pueda usar __doPostBack y anular el RaisePostBackEvent método en el código subyacente.

<script type="text/javascript">
    loadControls = function(input){
        __doPostBack(input.id, input.value);
    }
</script>
<asp:UpdatePanel ID="pnlLoadControls" runat="server">
    <ContentTemplate>
        <asp:TextBox ID="txtInput" runat="server" onkeyup="loadControls(this)" />
        <asp:PlaceHolder ID="plcLoadedControls" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>

Y luego en el código subyacente:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
    base.RaisePostBackEvent(source, eventArgument);
    if (source == txtInput)
    {
        plcLoadedControls.Controls.Add(new LiteralControl("Hello World!"));
    }
}

contestado el 03 de mayo de 12 a las 20:05

Esperaba hacer esto solo con javascript/jquery y hacer solicitudes a otra página. Tengo cuidado de que la página pase por un ciclo de vida completo cada vez y prefiero inyectar los controles en el script. - Sr.

Si desea hacerlo con jQuery, puede realizar una solicitud AJAX y cargar el contenido en un iframe. Para mantenerlo delgado y eficiente, considere enviar las solicitudes a un HttpHandler o algo. - James Johnson

Los iframes dan miedo porque no permiten el desplazamiento cuando se muestran en un iPad. Cualquier contenido personalizado cargado en uno de estos controles no podría expandirse más allá de los límites del contenedor. - Sr.

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.