asp.net page flow (user controls)

cenário:
aspx que faz o render de todas as outras páginas, aliás System.Web.UI.UserControl
main.aspx
- userControl.ascx
– componenteExistente.ascx

em vez da sequência PreInit, Init, InitComplete, PreLoad, Load, LoadComplete, SaveStateComplete, PreRender, PreRenderComplete de uma aspx tradicional temos uma sequencia bem mais curta de Init, Load e PreRender.
Para além de perceber a sequência dos eventos precisava de saber também como é que os userControls interagiam entre si. Basicamente a sequencia de eventos entre userControls funciona é:

  • de baixo para cima – os userControls que estiverem definidos no topo da página são processados primeiro
  • antes do load de fora para dentro – no caso de haver “nested” controls são processados primeiro os userControls que estiverem no nivel hierarquico mais baixo
  • a partir do load de dentro para fora
  • em sequência de eventos – os eventos de um mesmo tipo são todos processados em sequencia, ou seja primeiro processam-se todos os Inits, depois todos os Loads e assim sucessivamente.
  • o processamento dos eventos dos controlos de uma página, por exemplo Button.Click são feitos depois do Load


Alguns pormenores a ter em conta:

  • todos os objectos (System.Web.UI.Control) que forem criados dinamicamente têm que ser recriados a cada postback, preferencialmente no evento Init
  • as propriedades de um objecto são populadas automaticamente na passagem do Init para o Load do userControl respectivo. um pormenor a ter em atenção é que isto aplica-se quer a objectos já existentes na página quer aos criados dinamicamente desde que mantenham o mesmo nome.
  • o viewstate só fica disponivel no load

curiosamente, e ao contrário do que eu pensava, nada disto tem a ver com o viewstate o que se pode comprovar fazendo um trace há execução da página e verificando o estado dobjecto viewstate. Para mais informação ver o artigo: ViewState: All You Wanted to Know

Outro pormenor interessante é a utilização de variáveis estáticas (static / shared) que basicamente persistem o seu valor entre postbacks e estão logo disponiveis no primeiro evento – Init.

Share

No related posts.

Related posts brought to you by Yet Another Related Posts Plugin.

One thought on “asp.net page flow (user controls)

  1. Pingback: asp.net page flow (user controls) #2 | OsMeusApontamentos

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>