2009-10-30 11 views
9

La parte del ciclo de vida web es described así:¿Por qué el orden OnLoad/CreateChildControls cambia en la devolución de datos?

cargar la página

  1. Constructor
  2. OnInit
  3. OnLoad
  4. método
  5. ConnectionConsumer se llama si la parte web se puede conectar
  6. CreateChildControls ...

El 1 de devolución de datos (PostBack clic controlador establece a través de ViewState pública Propiedad)

  1. Constructor
  2. OnInit
  3. CreateChildControls
  4. manejo OnLoad
  5. PostBack clic ...

En segundo devolución de datos (PostBack clic controlador establece a través de ViewState pública Propiedad)

  1. Constructor
  2. OnInit
  3. LoadViewState
  4. CreateChildControls
  5. OnLoad ...

Como usted c y ver que OnLoad y CreateChildControls cambian su orden. Esto presenta algunas dificultades en mi código ya que necesito recopilar varios datos que solía hacer en el elemento OnLoad.

¿Hay algún motivo por el que el pedido se modifique en la fase posterior a la publicación?

Respuesta

14

Se llama a CreateChildControls cuando el marco (o usted mismo) llama al método EnsureChildControls. Se debe llamar a este método cada vez que necesite que los controles secundarios estén allí.

En el caso de la infraestructura, quiere establecer los valores publicados entre OnInit y OnLoad (para que pueda acceder a los valores durante OnLoad). Como necesita los controles para hacer esto, llamará a EnsureChildControls por usted.

Si no hay devolución de datos, tampoco hay necesidad de establecer los valores y, por lo tanto, la llamada a EnsureChildControls esperará hasta que el marco necesite los controles. Esto pasa a estar entre OnLoad y OnPreRender.

+0

Esa es una buena respuesta. – spa

-4

Eso no debería suceder, ¿estás absolutamente seguro? ¿No hay otros hilos en ejecución que puedan hacer parecer que el pedido ha cambiado?

Esto es, después de todo, solo ASP.NET, un programa ejecutado por una computadora (lo que significa que siempre debe hacer las mismas cosas, a diferencia de una persona).

+0

Sí, estoy seguro ... :-( – spa

+0

Esto no es algo que yo mismo inventé. Se describe en varias entradas de blog (ver el enlace en la pregunta). Lo verifiqué con el depurador. – spa

Cuestiones relacionadas