2012-04-26 9 views
6

Tengo un control de usuario que he escrito y he agregado a una página ASP.NET, y funciona muy bien. Sin embargo, estoy tratando de hacer referencia a una propiedad en ese control personalizado del código que está detrás, en Page_Load, pero no puedo, porque la variable, que es accesible, para la instancia es nula.La instancia de ASP.NET User Control es nula cuando se hace referencia en Page_Load en el código de página detrás de

¿Es esto normal para los controles del usuario y Page_Load? Y si es así, ¿cómo puedo hacer una referencia a la instancia del control para acceder a sus propiedades públicas? Esto es algo que tengo que hacer antes de que se muestre la página, para inicializar algunas variables.

+0

Debería poder hacer referencia a su Control de usuario en el método Page_Load. Por favor, muestre su marcado y su código. En el ejemplo de marcado, incluya las etiquetas <% @ Register%>. – Mark

Respuesta

0

Probablemente pueda acceder a su control de usuario desde el evento Page_PreRender.

Puede encontrar más documentación sobre page life cycle in asp.net here.

+0

¡Gracias, eso pareció hacer el truco! –

15

Tuve el mismo problema, y ​​resultó que estaba registrando mi control personalizado incorrectamente.

correcta Definición:

<%@ Register Src="PeriodControl.ascx" TagName="PeriodControl" TagPrefix="ucs" %> 

Definición incorrecta:

<%@ Register TagPrefix="ucs" Namespace="MyWebsite" Assembly="MyWebsite" %> 

La única diferencia era que remita al archivo ascx directamente en lugar del control en la asamblea. ¿¡Imagínate!?

+2

¿Qué debe hacer si el control de usuario está realmente en un ensamblaje (el archivo ascx está en el archivo DLL y no en el sitio). Por lo general, he utilizado un proyecto de implementación web para compilar todos los controles de usuario de uso común en una DLL. VS2012 no es compatible con ese tipo de proyecto, pero puede compilar un sitio en un ensamblado y VS lo leerá ... pero no entiendo cómo se debe registrar correctamente para que los controles en los controles de usuario no sean nulos. –

+0

No estoy seguro. Si hace referencia a un dll, tal vez aparezca en su caja de herramientas y puede arrastrarlo a su página. Entonces VS creará la etiqueta de registro para usted :) Eso es todo lo que puedo pensar. Espero que ayude ... –

+0

Estuve luchando durante 2 horas y finalmente encontré tu solución, funcionó a las mil maravillas. – gangt

Cuestiones relacionadas