Tuesday, September 14, 2010

Ciclo De vida De una página ASP.NET

Una página ASP.NET cuando está siendo cargada, por debajo está siendo pasada por distintas etapas de procesamiento. Existen los llamados "Eventos de Página" y eso lo podés localizar dentro de tu code-behind como la imágen mostrada.


Justamente las etapas por las que pasa toda página son esas... y lo siguiente es el órden. Es muy importante conocer el orden ya que así podemos escribir el código apropiado en el momento adecuado.

1.PreInit
2.Init
3.InitComplete
4.PreLoad
5.Load
6.Eventos de control
7.LoadComplete
8.PreRender
9.SaveStateComplete
10.Render
11.Unload

Pero surge una problemática cuando nuestra página ASP.NET tiene un USERCONTROL (ascx)... Hay eventos de página que primero pasa por el usercontro y luego por nuestro aspx.

Justamente ese problema tenía yo. De mi aspx necesitaba enviarle un valor a mi usercontrol y esto lo hacía desde su page_init pero primero pasaba por el page_init del usercontrol de modo que el valor nunca llegaba.

Pero los eventos de página no son los mismo que el de un usercontrol comparados al de un aspx. A continuación se muestra una imágen con los page events de un usercontrol



Como pueden notar, el usercontrol no tiene el evento PreInit asi que este podriamos usarlo para enviar un valor al usercontrol desde el formulario aspx en el caso de que necesitemos que lo reciba antes de su load.

El orden de una página ASP.NET con su usercontrol es como sigue:

.aspx - Page_PreInit()

.ascx - Page_Init()
.aspx - Page_Init()
.aspx - Page_Load()
.ascx - Page_Load()
.aspx - Page_PreRender()
.ascx - Page_PreRender()
.ascx - Page_Unload()
.aspx - Page_Unload()