Tengo un problema al usar LoadControl(type, Params)
. Me explico ...Asp.net Usercontrol LoadControl Issue
que tienen un control de usuario súper simple (ascx)
<%@ Control Language="C#" AutoEventWireup="True" Inherits="ErrorDisplay" Codebehind="ErrorDisplay.ascx.cs" EnableViewState="false" %>
<asp:Label runat="server" ID="lblTitle" />
<asp:Label runat="server" ID="lblDescription" />
con código (C#) por detrás de:
public partial class ErrorDisplay : System.Web.UI.UserControl
{
private Message _ErrorMessage;
public ErrorDisplay()
{
}
public ErrorDisplay(Message ErrorMessage)
{
_ErrorMessage = ErrorMessage;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (_ErrorMessage != null)
{
lblTitle.Text = _ErrorMessage.Message;
lblDescription.Text = _ErrorMessage.Description;
}
}
}
En otra parte de mi aplicación web que estoy añadiendo una instancia del control de usuario a la página utilizando el siguiente código:
divValidationIssues.Controls.Add(LoadControl(typeof(ErrorDisplay), new object[] { MessageDetails }));
estoy utilizando la versión sobrecargada LoadControl porque quiero pasar el parámetro Message al constructor. Todo esto aparece para que funcione bien.
Sin embargo, cuando se dispara el OnPreRender()
en el control de usuario ErrorDisplay, las variables lblTitle y lblDescription son null
, a pesar de tener un marcado equivalente. La variable de mensaje se ha llenado correctamente.
¿Alguien puede arrojar alguna luz sobre por qué esto puede estar pasando?
Gracias
EDIT:
Sólo por la claridad También voy a añadir que el código que se agregó mediante programación el control de usuario a la página se ejecuta en respuesta a una pulsación de botón, por lo que el 'alojamiento la página 'ha progresado a través de Init, Page_Load y ahora está procesando los controladores de eventos.
No puedo agregar los controles de usuario en una etapa anterior del ciclo de vida asp ya que se están creando en respuesta a un evento de clic de botón.
+1 y una nota de agradecimiento mía por resolver el problema que estaba teniendo. :) –
Excelente seguimiento! –