Propriedades nos Arquivos ASCX

by Israel Aece 29. December 2003 12:08

Hoje precisei criar propriedades de leitura (Public Property) dentro do meu arquivo ASCX para que eles sejam acessíveis fora dele, ou seja, precisava usar esses dados no meu WebForm (ASPX). No primeiro momento criei as propriedades:

Private m_nome As String
Private m_email As String

Public ReadOnly Property Nome As String
    Get
        Return Me.m_nome
    End Get
End Property


Public ReadOnly Property EmailAs String
    Get
        Return Me.m_email 
    End Get
End Property


Até aqui sem problemas. Arrastei o meu WebUserControl (ASCX) para dentro de meu WebForm(ASPX) e no evento Page_Load do meu WebForm estava fazendo:

Private MeuUserControl As WUCTopo

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Response.Write(MeuUserControl.Nome)
    Response.Write(MeuUserControl.Email)
End Sub

Só que nesse caso sempre os valores eram nulos. Quando decidi rodar em Debug com BreakPoints para ver o que acontecia, vi que o Evento Page_Load do WebForm (ASPX) é executado antes do mesmo Evento (Page_Load) do WebUserControl (ASCX). Com isso a solução foi usar o Evento Page_PreRender que é executado antes da página ser exibida, mas é chamado após todo o processamento dentro dos WebUserControls. Abaixo o código correto:

Private Sub Page_PreRender(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
    Response.Write(MeuUserControl.Nome)
    Response.Write(MeuUserControl.Email)
End Sub

Então a ordem de execução dos Eventos fica:

1 - Executa o Evento Page_Load do WebForm (ASPX).
2 - Executa o Evento Page_Load  WebUserControl (ASCX).
3 - Executa o Evento Page_PreRender do WebForm (ASPX).
4 - Executa o Evento Page_PreRender do WebUserControl (ASCX).

Agora fica claro porque no Evento Page_Load do WebForm não conseguia visualizar as Propriedades. ;)

Tags:

ASP.NET

Comments

8/3/2009 10:30:58 AM #

Francis

Bom artigo
Tem muitas vantagens usar .ascx nomeadamente o facto de desta forma se conseguir normalizar os controlos dos formulários:

dropdownlist
valores a listar
valores a a guardar

textbox
dimensão
waternark

qq um dos controlos anterior pode ficar no .ascx com validators watermark etc.
pode posteriormente ser reutilizado em diversos tipos de formularios no meu caso internet e intranet (backoffice)

Francis Portugal

10/14/2009 10:05:59 AM #

Paulo César Viana

Muito interessante...é cada coisa viu!!

Paulo César Viana Brazil

Comments are closed

Powered by BlogEngine.NET 1.5.0.0
Theme by Mads Kristensen

Sobre

Meu nome é Israel Aece e sou especialista em tecnologias de desenvolvimento Microsoft, atuando como desenvolvedor de aplicações para o mercado financeiro utilizando a plataforma .NET. [ Mais ]

Twitter

Indicações

Introdução ao ASP.NET Web API - e-Book