quinta-feira, 7 de junho de 2007

Master Pages Tipadas

Bem hoje vou falar de uma coisa muito simples, tão simples que nem sei por que já não vem habilitada por padrão, por ser extramente útil para quem usa master pages, e acredito que seja praticamente a totalidade de quem desenvolve paginas ASP.Net 2.0

O assunto em questão são máster pages tipadas, e para que elas servem, servem para que você possa acessar diretamente os métodos da master page a partir da pagina onde ela foi aplicada.Sempre que se usa uma master page, por melhor que seja o projeto do layout quase sempre tem alguma coisa que você gostaria de poder definir na master page e mudar na pagina em que você a esta usando. Por exemplo digamos que você tenha uma label com um titulo em todas as paginas do seu site, no mesmo lugar mesma fonte mas o texto diferente, algo como “PAGINA DE ARTIGOS” e “PAGINA DE CADASTRO”, e assim por diante em cada uma das 100 paginas do seu site,Pois temos duas maneiras de fazer isto.

Toda pagina ASP.Net 2.0 tem uma propriedade Master, que nada mas e do que uma estância da pagina master page que esta associada a ela, e por esta propriedade podemos acessar a master page sem o menor problema. Uma das maneiras e por cast do tipo, você pode usar um comando assim.

CType(CType(Me.Master,MasterPage).FindControl("lbltitulo"), Label).Text = "Titula desta pagina"

Legal você mudou o label, maa as custas de dois casts e uma busca na coleção de componentes da pagina, o cast e uma coisa que deve ser evitada o máximo possível por degradar a performance, então a sugestão e tipa a master page da pagina, e isto e uma coisa muito simples. Vamos ver como se faz isto, crie um novo projeto web, adicione um novo item master page, e a configure normalmente, como a sua criatividade permitir.

Cria uma segunda pagina e aplique a sua recém criada master page a ela.Agora acesse o código html da sua pagina clicando em cima da guia souce que fica no canto inferior da tela, repare no inicio da pagina a tag de diretiva de configuração,que é a primeira tag, onde tem a informação da linguagem usada, qual a herança da pagina a master page e outras. Vamos inserir uma linha de código logo abaixo da tag page,e então teremos a nossa pagina tipada.Escreva o seguinte código.

<%@ MasterType VirtualPath="~/MasterPage.master" %>

O que fizemos aqui e informar a nossa pagina qual e o tipo da master page que ela esta usando,o parametro VirualPath recebe o caminho onde estar a master page, caso você tenha mudado o diretorio ou o nome padrão de sua master page, informe o caminho e o nome que você deu a ela

Agora vocÊ poderarar acessar o label da master sem a nescidade de cast, para isto vamos criar uma propriedade publica em nossa master page. Vá a até a master page e cria a seguinte propriedade

Property TituloDaPagina() As String

Get

Return Me.lblTitulo.Text

End Get

Set(ByVal value As String)

Me.lblTitulo.Text = value

Me.Page.Title = value

End Set

End Property

Aqui nos estamos atribuindo o valor da propriedade diretamente ao text do label e ao title da pagina para que atualize também a barra de titulo do navegador.

Voltando a pagina que esta usando a nossa master page agora você pode digitar o seguinte código.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

Me.Master.TituloDaPagina = "Primeiro exemplo da Pagina"

End Sub

Veja que o codigo e muito mas limpo facil e sem o indesejavel cast., agora você pode criar qualquer propriedade procedure ou função que julgar necessário na sua master page, e expor-las nas paginas que “herdam” de sua master page.

Valeu e até, e um abraço.