Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1017
Assunto : ASP.NET
Titulo: Configurando o page_error centralizado com Nested Master pages

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Em uma dica anterior (http://www.bufaloinfo.com.br/dicas.asp?cod=1009 ) mostrei como fazer um tratamento geral de erros para o site utilizando master pages. Porém nada é tão simples.

Quando utilizamos nested master pages o problema se complica, pois a solução que apresentei na dica anterior apenas fará com que a 2a master page tenha também o tratamento de erro da primeira, mas o page_Error da página não estará executando o tratamento de erro.

A opção perfeita seria se na nested master page fosse possível pegarmos o endereço da rotina ligada ao seu page_Error e atribuirmos esse endereço ao page_error da página que usará a nested master page. Porém isso exigiria um volume de uso de reflection muito grande e como os provedores normalmente trabalham com medium trust, não funcionaria.

A solução para o problema é que a rotina que faz o tratamento do page_Error na master page seja definida como public e desta forma a nested master page poderá vincular esta rotina com o evento page_Error da página que virá a usar a nested master page -> a content page

Realmente esta solução cria um certo acoplamento entre as master pages, mas evita o reflection em excesso que exigiria full trust para o site.

Na nested master page, o código fica assim :

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
AddHandler Page.Error, AddressOf DirectCast(Me.Master, Bufalo).Page_Error
End Sub

Observe a necessidade do directCast em Me.Master para que a rotina Page_Error fique acessível.

Então temos :

A master page principal define o page_error como público

No load da master page principal o page_Error é atribuido ao page_error de quem usar esta master page

A nested master page utiliza a master page principal (e consequentemente ganha o page_error)

A nested master page, em seu load, liga o page_error da master page principal com o page_error da content page

A content page se aproveita de toda a sequencia

Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 6/21/2012 11:50:00 AM
nome: Pedro
email: pedrombm@hotmail.com
comentário:
O código:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
AddHandler Page.Error, AddressOf DirectCast(Me.Master, Bufalo).Page_Error
End Sub

deverá ficar na Nested Master Page, correcto?
Não consigo perceber que código é necessário colocar na Master Page e nas Content Pages.

Obrigado


 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br