Frequentemente você vai precisar manipular dados entre paginas ASP.NET, por exemplo, passar a informação da página de origem para uma página de destino. Geralmente, você pode ter uma página onde os usuários podem selecionam itens para comprar ou qualquer outra operação e quando os usuários enviam a página e você quer chamar outra página que pode processar ou exibir as informações que o usuário inseriu. Existem alguns modos de criar este efeito, nós vamos misturar as técnicas de codificação ASP.NET chamadas CodeBehind e In-line e utilizar propriedades publicas passadas através do Server.Transfer e da diretiva PreviousPageType.
Passando Parâmetros Entre Duas Paginas ASPX
Crie uma solução Web dinâmica chamada DaWeb003 em um projeto do tipo C# Empty e adicione uma pagina WebForms chamada default.aspx e outra chamada resultado.aspx. Defina a pagina default como pagina inicial da sua aplicação utilizando o botão direito na janela Solution Explorer e escolhendo a opção Set As Start Page.
1 – Para criar os objetos, na pagina inicial você pode primeiro criar uma tag <h2> e um objeto HTML chamado FieldSet, e então adicionar os componentes ASP.NET dentro dele, utilize dois Labels, dois DropDownList e um Button, você pode utilizar o Design para preencher as propriedades de seu DropDown ou pode apenas utilizar o código correspondente encontrado logo abaixo:
2 – A pagina inicial da aplicação oferece duas combinações na qual você pode selecionar, as opções pertencem umas as outras e o código na pagina C# CodeBehind processa a camada de negocio, avalia os resultados e os envia para a pagina de resultado:
2 – O Processo envia três parâmetros para a pagina ASPX, dois são os parâmetros que você escolheu, somente a nível de descrição, pois o processamento já foi efetuado na pagina anterior, o terceiro parâmetro é o resultado da combinação escolhida, que é nada mais que uma propriedade publica criada na própria classe da pagina principal e enviada para a pagina de resultado através de uma declaração Server.Transfer e recebida através de uma diretiva PreviousPageType referenciando a pagina origem para que a mensagem possa ser corretamente exibida para o usuário utilizando ainda a técnica de código C# na pagina ASPX chamada de In-line:
Exemplo:
Neste exemplo criamos duas paginas ASPX e utilizamos o CodeBehind no qual processa um resultado para uma seleção do usuário e o exibe através de parâmetros e uma propriedade publica. Os dados são processados na pagina de resultado por meio de código In-line.
ASPX- default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="DaWeb003._default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Desenvolvimento Aberto - Passando Parâmetros Entre Paginas</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>Desenvolvimento Aberto - Passando Parâmetros</h2>
<br />
<fieldset>
<legend>Escolha o vocalista da banda correspondente:</legend>
<br />
<br />
Escolha um vocalista:<br />
<asp:DropDownList ID="DropDownList1" runat="server" Width="200px">
<asp:ListItem>Eddie Vedder</asp:ListItem>
<asp:ListItem>Kurt Cobain</asp:ListItem>
<asp:ListItem>Scott Weiland</asp:ListItem>
<asp:ListItem>Layne Staley</asp:ListItem>
</asp:DropDownList>
<br />
<br />
Escolha a banda:<br />
<asp:DropDownList ID="DropDownList2" runat="server" Width="200px">
<asp:ListItem>Stone Temple Pilots</asp:ListItem>
<asp:ListItem>Alice in Chains</asp:ListItem>
<asp:ListItem>Nirvana</asp:ListItem>
<asp:ListItem>Pearl Jam</asp:ListItem>
</asp:DropDownList>
<br />
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Enviar" />
<br />
<br />
</fieldset>
</div>
</form>
</body>
</html>
C#- default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace DaWeb003
{
public partial class _default : System.Web.UI.Page
{
// Declara variáveis para os parâmetros
private string nome;
private String banda;
private Boolean valida = false;
protected void Page_Load(object sender, EventArgs e)
{
}
// Define uma propriedade para transferencia
public Boolean Resultado
{
get
{
return valida;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
// Recupera parametros
nome = Request.Form["DropDownList1"];
banda = Request.Form["DropDownList2"];
// Se nome e banda são iguais OK ou proxima tentativa senão falso
if ((nome.Equals("Eddie Vedder") && banda.Equals("Pearl Jam")) ||
(nome.Equals("Kurt Cobain") && banda.Equals("Nirvana")) ||
(nome.Equals("Scott Weiland") && banda.Equals("Stone Temple Pilots")) ||
(nome.Equals("Layne Staley") && banda.Equals("Alice in Chains")))
{
valida = true;
}
// Transfere dados para a pagina de resultado
Server.Transfer("resultado.aspx");
}
}
}
ASPX- resultado.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="resultado.aspx.cs" Inherits="DaWeb003.resultado" %>
<!-- Diretiva que aponta para a pagina origen -->
<%@ PreviousPageType VirtualPath="~/default.aspx" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Desenvolvimento Aberto - Resultado</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h2>Desenvolvimento Aberto - Resultado</h2>
<%
Boolean resultado = PreviousPage.Resultado;
String nome = PreviousPage.Request.Form["DropDownList1"];
String banda = PreviousPage.Request.Form["DropDownList2"];
if (resultado)
{
Response.Write("Você acertou!!! O vocalista: " + nome + " pertence a banda: " + banda);
}
else
{
Response.Write("Você errou!!! O vocalista: " + nome + " não pertence a banda: " + banda);
}
%>
</div>
</form>
</body>
</html>




