ASP .NET 2.0
Cross-Page Posting
Uma situação comum é criarmos um formulário e seguida precisarmos dos dados digitados em uma próxima página. Por exemplo, ao encerrar um cadastro desejamos exibir uma tela de confirmação para o usuário, e que esta exiba os dados digitados na página anterior. Para fazermos isso temos algumas alternativas, que são:
Session:
Session["Nome"] = this.txtNome.Text;
Session["Senha"] = this.txtSenha.Text;
Response.Redirect("Confirma.aspx");
HttpContext:
Context.Items.Add("Nome", usuario.Nome);
Context.Items.Add("Senha",this.txtSenha2.Text);
Server.Transfer("confirmaCadastro.aspx");}
string nome = Context.Items["Nome"].ToString();
string senha = Context.Items["Senha"].ToString();
QueryString:
string url;
url="form2.aspx?Nome=" + txtNome.Text + "&Senha=" + txtSenha.Text;
Response.Redirect(url);
txtNome.Text= Request.QueryString["Nome"];
txtSenha.Text= Request.QueryString["Senha"];
Na versĂŁo ASP.NET 2.0 nĂłs temos uma nova alternativa, e este Ă© o objetivo deste artigo, explicar como trabalhar com este novo processo, Cross-Page Posting.
Requisitos: Visual Studio 2005 ou Visual Web Developer 2005 Express Edition - http://msdn.microsoft.com/vstudio/express/vwd/
Iniciando o projeto
1. Crie um New Web Site chamado CrossPosting
1.1. No arquivo Default.aspx digite o seguinte cĂłdigo
Repare na propriedade PostBackBackUrl do botão btnCadastrar, isto redirecionará da página Default.aspx para a página Confirmacao.aspx.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Cadastro de usuário:<br />
<br />
Nome:<asp:TextBox ID="txtNome" runat="server"></asp:TextBox><br />
<br />
Senha:
<asp:TextBox ID="txtSenha" runat="server" TextMode="Password"></asp:TextBox>
<br />
<br />
<asp:Button ID="btnCadastrar" runat="server" PostBackUrl="~/Confirmacao.aspx" Text="Cadastrar" /></div>
</form>
</body>
</html>
2. No próximo passo crie um novo Web Form chamado Confirmação.aspx
2.1. Digite a diretiva
<%@ PreviousPageType VirtualPath="~/Default.aspx" %>
Através desta diretiva teremos acesso às propriedades da página Default.aspx.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Confirmacao.aspx.cs" Inherits="Confirmacao" %>
<%@ PreviousPageType VirtualPath="~/Default.aspx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Confirmação</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblMensagem" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
3. Prosseguindo com nosso projeto iremos digitar as propriedades Textbox na página Default.apx.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
public TextBox _txtNome
{
get { return txtNome; }
}
public TextBox _txtSenha
{
get { return txtSenha; }
}
}
4. E por fim iremos codificar o arquivo Confirmacao.aspx.
4.1. Na Figura 1 perceba que temos acesso às propriedades da página Default.aspx.cs.
4.2. Um outro detalhe é que se o usuário tentar acessar a página Confirmacao.aspx diretamente ele será redirecionado para o Default.aspx, através da propriedade PreviousPage.
Figura 1 – Acesso a propriedade _txtSenha
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Confirmacao : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
{
lblMensagem.Text = "Seu cadastro foi realizado com sucesso. <br> Anote seus dados <br>" +
"Nome: " + PreviousPage._txtNome.Text + "<br> Senha: " + PreviousPage._txtSenha.Text;
}
else
{
Response.Redirect("Default.aspx");
}
}
}
Figura 2 – Página Default.apx
Figura 3 – Página Confirmacao.aspx
Abraços e até o próximo.
.br
MSN – fgamans@hotmail.com
www.aspneti.com – community.net