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 .