ventana usuario una pestaña pasar pagina otra nueva net llamar desde datos crear control como aspx asp abrir asp.net user-controls render ascx

una - Cuando instancia un control de usuario ASP.NET en tiempo de ejecución, ¿por qué ignora el archivo ASCX?



pasar de una pagina a otra en asp.net c# (1)

Creé un control de usuario ASP.NET regular, incluido el archivo ascx. Por ejemplo:

MyUserControl.ascx MyUserControl.ascx.cs

Luego trato de renderizar el control manualmente, en tiempo de ejecución, usando un código similar al siguiente código:

var testMyUserControl = new MyUserControl(); var textWriter = new HtmlTextWriter( new System.IO.StringWriter(new StringBuilder())); testMyUserControl.RenderControl(textWriter); Console.Write(textWriter.InnerWriter.ToString());

Nada de lo que incluyo en el archivo ASCX parece representar, ya sea HTML estático o cualquier control .NET.

Sin embargo, si anulo el método Render () en el código subyacente y el contenido de salida manualmente, se procesa.

¿Que me estoy perdiendo aqui?


No necesita rendir su control usted mismo. Si necesita agregarlo dinámicamente a la página, hágalo de la siguiente manera:

UserControl myControl = (UserControl) Page.LoadControl("~/Controls/MyControl.ascx"); Page.Controls.Add(myControl);

Lo más probable es que desee colocarlo en una determinada parte de la página, por lo que en lugar de utilizar Page.Controles, use un marcador de posición:

<asp:Placeholder ID="myPlaceHolder" runat="server" />

y usa un código como este:

myPlaceholder.Controls.Add(myControl);

Esta es la mejor manera de agregar un control dinámicamente , pero si puede hacerlo declarativamente, sería mucho más fácil.

<%@ Register TagPrefix="my" TagName="Control" Src="~/Controls/MyControl.ascx" %> <my:Control ID="myControl" runat="server" />

Recuerde: si agrega el control dinámicamente, asegúrese de volver a agregar el control a cada carga de página .