Transferindo dados de uma página para outra no ASP.NET

Transferir dados de forma segura e confiável é um dos primeiros problemas que enfrentamos ao programar numa nova linguagem ou plataforma. O VS 2010 e o C# facilitam sobremaneira esta ação. Muito pouco código é necessario digitar. Um exemplo simples e direto é a melhor forma de mostrar isso.

Existem duas formas de fazer a transferência:
a) usando o Response.Redirect(“meuarquivo.aspx”) ?......

b) usando o Server.Transfer(“meuarquivo.aspx”)

Usaremos o Server.Transfer.

Crie um projeto no VS2010 e insira dois webforms. Denomine-os Form1 e Form2

Criando a Interface do Form1
Insira um textbox e um button
ID do texbox = txtBox1
ID do button = btnTransfere

/////////Aqui vai o cabeçalho com informações sobre a linguagem utilizada, etc.

................

html xmlns="http://www.w3.org/1999/xhtml">

head runat="server">

title>

/head>

body>

form id="form1" runat="server">

div>

asp:Button ID="btnTransfere" runat="server"

onclick="btnTransfere_Click" Text="Transferir" />

br />

br />
asp:TextBox ID="txtBox1" runat="server">


br />

/form>

/body>

/html>

Arquivo .cs do Form1

Using System;

.......

namespace TranferirDados

{

public partial class Form1 : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack) // Coloque aqui seus métodos

}

No Form1 precisamos criar uma propriedade para fixar uma a variável que vai ser transferida

public string Codigo // podia ser quaquer "nome" para Codigo

{
get{return txtBox1.Text; }

set{ value = Codigo; }

}

protected void btnTransfere_Click(object sender, EventArgs e)

{

Server.Transfer("Form2.aspx");

{

}

}

Trabalhando com o Form2

1) Interface do Form2

html xmlns="http://www.w3.org/1999/xhtml">head runat="server">

head>

title>

head>

body>

form id="form2" runat="server">

div style="text-align: center">

 asp:TextBox ID="txtBox2" runat="server">

br />

br />

br /> asp:Label ID="Label1" runat="server" Text="Form2"> /div>

/form>

body>

html>

// É fácil verificar que adicionamos um textBox e um Label

Arquivo .cs do Form2

using System;

..................

namespace TranferirDados

{

public partial class Form2 : System.Web.UI.Page

{

 private Form1 varSource; // Publicando uma variável tipo Form1

 protected void Page_Load(object sender, EventArgs e)

 {

 if (!Page.IsPostBack)

 {

varSource = (Form1)Context.Handler;

 txtBox2.Text = varSource.Codigo; //Se o Intellisense não mostrar a opção Codigo algo saiu errado

}

}

}

}

E é só isso. Inclua na sua aplicação que funciona sem problema

Exibições: 2735

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

Comentário de João Castro em 19 novembro 2011 às 10:08

O code behind é colado diretamente e fica colorido como esta no programa. As rotinas em ASP.NET é que precisam ser modificadas passando para imagens. Dois dias é muito pouco. Vc deve reconhecer que o pessoal que administra o site tem outros afazeres(oops). O Ramon demora mas atende de forma carinhosa e educada. As vezes leva semanas.

Comentário de Rafael Martins em 19 novembro 2011 às 9:56

 

Mas seu código abaixo nos comentários é em texto. Vc deve ter colorido manualmente então, procede?

Fiz uma postagem aqui e fiz dessa forma, só que isso é cansativo e infelizmente tem a burocracia de esperar aprovação e já fazem dois dias e nada.

 

Comentário de João Castro em 19 novembro 2011 às 6:25

Caro Rafael

 

Para incluir a rotina conforme aparece no VS2010 vc tem que transforma-la em imagem. Eu, particularmente, uso o artificio de copiar a tela e fazer os recortes no office 2007 ou 2010(ferramenta do office).Primeiro vc insere a tela no paint, grava o arquivo e abre-o com o office.

Comentário de Rafael Martins em 19 novembro 2011 às 0:52

 

Sou novo por aqui e gostaria de saber como vc colocou código colorido. Tem alguma tag ou vc fez manualmente?

 

Comentário de João Castro em 2 maio 2011 às 9:53
Caro Rigel
Experimentei todas as opções. A única que nunca falha é essa que apresentei aqui no blog.
Comentário de Rigel Octaviano de M. Aguilar em 2 maio 2011 às 9:07

Outro ponto importante a mencionar é a possibilidade de fazer um post diretamente de uma página para outra através da propriedade "PostBackUrl" de um "botão", por exemplo.

Para recuperar a página anterior é só utilizar a propriedade "PreviousPage" da "Page" na segunda página.

Comentário de Thiago Diniz em 27 abril 2011 às 21:17

Hoje eu uso CLASSE no DOTNET

Property

GET

SET

 

Comentário de João Castro em 27 abril 2011 às 20:27
Exclarecimento importante

Não sou autor dos exemplos citados
Comentário de João Castro em 27 abril 2011 às 20:24

Existe uma outra forma

Usar QueryString


protected void btnEnviar_Click(object sender, EventArgs e) 

{ 

  

   Response.Redirect("form2.aspx?nome="+ txtNome.Text + "&site=" +txtSite.Text);

}

protected void Page_Load(object sender, EventArgs e) 

{  

  txtNome.Text = Request.QueryString["nome"];

  txtSite.Text = Request.QueryString["site"]; }
Comentário de João Castro em 27 abril 2011 às 20:00

public class Class1
 {    
   string nome;   
   string site;   
    public  string Nome 
    {    
      get { return nome; }  
      set { nome = value; } 
    }    
    public string Site 
     {   
       get { return site; }   
       set { site = value; } 
    }  
 }
 protected void Page_Load(object sender, EventArgs e)
 {     //Recuperando o objeto - precisa fazer o cast 
    Class1 objeto2 = (Class1)Session["class1"]; 
 
     txtNome.Text = objeto2.Nome;
     txtSite.Text = objeto2.Site;
     Session.Remove("class1");
 }
Essa era a parte que faltava. Existem outras formas. Usei todas e a mais confiável
é com Server.Transfer.















© 2017   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço