asp.net sharepoint moss

asp.net - ¿Por qué el orden OnLoad/CreateChildControls cambia en la devolución de datos?



sharepoint moss (2)

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).

El ciclo de vida de la parte web se describe así:

En la carga de página

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

En 1st Postback (el manejador de clics de PostBack establece ViewState a través de Public property)

  1. Constructor
  2. OnInit
  3. CreateChildControls
  4. OnLoad
  5. Manejo de clic en PostBack ...

En la 2da. Postback (el manejador de clics PostBack establece ViewState a través de la propiedad pública)

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

Como puede ver, 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 alguna razón por la que el pedido se modifique en la fase posterior a la publicación?


Se llama a CreateChildControls siempre que el framework (o usted mismo) llame 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 del marco, 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 es necesario 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.