2010-09-21 16 views
10

mayoría de las veces lo uso cuando estoy teniendo acceso a una propiedad de un control compuesto que depende de un control secundario. Pero también lo he agregado a OnInit de un control para poder asegurarme de que se haya agregado correctamente un campo oculto. Hace solo un minuto lo llamé en RenderControl porque tenía un problema al procesar un extensor de calendario y lo solucionó. Estoy empezando a ser un poco confusa en cuando necesito y cuando no necesito llamar EnsureChildControls y cuando debería llamarlo. Cualquier puntero es bienvenido. ¡Gracias!¿Cuál es el uso correcto de EnsureChildControls()?

+5

esta pregunta me hace feliz aprendí MVC :) – fearofawhackplanet

Respuesta

6

EnsureChildControls desencadena CreateChildControl si no es que ya tuvieron lugar antes. Esto debe hacerse solo una vez en el ciclo de vida de la página. Lo llamo incondicionalmente en OnInit/Page_Init y en ningún otro lugar. Este lugar tiene la ventaja de que los controles se crean antes de que ASP.NET cargue ViewState. Si usa ViewState o ControlState, es necesario crear los controles secundarios tan temprano.

+0

Será llamándolo en OnInit eliminar la necesidad de llamar en las propiedades de si la propiedad tiene acceso a algo así como TextBox1.Text? – Mike

+0

En general digo "sí", pero en detalle depende de su uso. Si llama EnsureChildControls en OnInit es segura para acceder a los controles (a través de propiedades o de otro tipo) sin llamar de nuevo en todas las etapas posteriores del ciclo de páginas de la vida (de carga, los eventos de devolución, Render, ...) Si depende de ViewState esto debería ser el único uso. –

0

EnsureChildControls método se asegura que los controles secundarios se crean antes de acceder a ellos.

Cada vez que escriba controles compuestos por ejemplo, desea construir sus controles dentro de los eventos CreateChildControls y luego llamar a EnsureChildControls antes de acceder a ellos para asegurarse de que se hayan creado todos los controles para que no se produzca una excepción de referencia nula.

Cuestiones relacionadas