Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
623
Assunto : ASP.NET
Titulo: Trocando dados entre WebForms

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



A estrutura de funcionamento do HTTP nos permite trocar dados entre páginas através de métodos GET e POST. Como no ASP.NET não podemos fazer POST para outra página, então ficamos limitados ao uso do GET.

Mas existe um outro truque que nos permite realizar a troca de dados. Utilizando o Server.Transfer, ao invés do response.redirect, a troca de uma página web para outra página web acontece no servidor. Isso faz com que tudo o que foi gerado na primeira requisição seja mantido.

Assim sendo, supondo que temos um webform1 e um webform2 e o webform2 precisará receber dados do WebForm1, então podemos fazer com que o webform2 acesse diretamente o webform1, desde que estejamos utilizando server.transfer entre os 2.

Neste caso temos duas formas de passar os dados : Podemos fazer com que os webControls do webform1 fiquem visiveis ao webform2 ou podemos tranferir valores isolados.

Veja um exemplo de um webform1 com os dois recursos :

Public Class WebForm1
Inherits System.Web.UI.Page
Dim v As Integer
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
valor = 10
Server.Transfer("webform2.aspx")
End Sub

Public Property valor() As Integer
Get
Return (v)
End Get
Set(ByVal Value As Integer)
v = Value
End Set
End Property
End Class


Para tornar o webControl (textbox1) visível ao webform2 é necessário trocar a declaração do controle de Protected para Public. Porém o visual studio não permitirá mantermos o public dentro da área de código mantida pelo visual studio, então precisaremos recortar a linha de declaração da área de código do visual studio e colocarmos fora desta área de código.

Já para a passagem de um valor simples foi criada uma propriedade, Valor, para manter esta informação.

No clique do botão a propriedade recebe o valor 10, que desejamos transmitir, e fazemos o server.transfer.

Veja o código do webform2 para recuperar a informação :

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
Label1.Text = CType(context.Handler, WebForm1).valor
Label2.Text = CType(context.Handler, WebForm1).TextBox1.Text
End Sub

O context.handler contém uma instancia do WebForm1. Podemos então acessar tanto a propriedade valor como a textbox que transformamos em pública.

O único porém desta técnica é que o server.transfer ignora os mecanismos de autenticação do ASP.NET. Veja detalhes deste problema na dica em http://www.bufaloinfo.com.br/dicas.asp?cod=581


Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
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