ASP.NET – Utilizando Parâmetros e Propriedades Entre Páginas – C#

Publicado: 16 de outubro de 2014 em C#

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:

Design - ASPX

Design – ASPX

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:

C# - Codebehind

C# – Codebehind

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:

Diretiva PrevioiusPageType e In-Line Code

Diretiva PrevioiusPageType e In-Line Code

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>
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s