Você está na página 1de 29

ASP.

NET
Contedo
1 Introduo
2 Criando e Executando um Exemplo de Formulrio
Web Simples
3 Controles Web (Web Controls)
3.1 Trabalhando com Controles do Servidor
3.2 Persistindo Valores entre Web Forms

ASP.NET - Karina Oliveira

ASP.NET
Contedo
4 Atividades Extras
4.1 Listando Arquivos de um Diretrio
4.2 Controle AdRotator
4.3 Acompanhamento de Sesso
4.3.1 Cookies
4.3.2 HttpSessionState

ASP.NET - Karina Oliveira

Persistindo Valores entre WebForms

Existem vrias formas de passar valores de


uma pgina para outra em ASP.NET:

Variveis de sesso (Session)


Mtodo Server.Transfer
Classe HttpContext
QueryString (este j foi explicado!)
ViewState (este tambm j foi explicado!)

ASP.NET - Karina Oliveira

Usando Variveis de Sesso


A idia aqui armazenar valores para um web form
(form1.aspx) em variveis de sesso e acess-las no
outro web form (form2.aspx)
Voc s deve ter o cuidado de no sobrecarregar a
sesso com muitas variveis.
Vejamos como se faz:
Voc cria um web form com controles
Fornece algum boto ou link para submeter o seu
formulrio
No evento Click do boto inclua uma varivel de sesso
e defina cada uma com os valores dos controles que
deseja passar
Usando o mtodo Response.Redirect envie os valores
do formulrio form1.aspx para o outro formulrio
form2.aspx
ASP.NET - Karina Oliveira

Usando Variveis de Sesso

Usando o exemplo da Pgina de Login


anterior, tem-se:

ASP.NET - Karina Oliveira

Usando Variveis de Sesso


No arquivo Login.aspx.cs:
private void sendButton_Click(object sender, System.EventArgs e)
{
this.Session["user"] = userTextBox.Text;
this.Session["password"] = passwordTextBox.Text;
this.Response.Redirect("Resposta.aspx");
}
____________________________________________________________________

No arquivo Resposta.aspx.cs:
private void Page_Load(object sender, System.EventArgs e)
{
respostaLabel.Text = "Usurio = " + Session["user"].ToString() +
" e Senha = " + Session["password"].ToString();
Session.Remove("user");
Session.Remove("password");
}

ASP.NET - Karina Oliveira

Usando Server.Transfer

O mtodo Server.Transfer() transfere a execuo de uma pgina


ASPX para outra pgina ASPX. A pgina ASPX chamada deve ficar
no mesmo servidor Web da pgina ASPX original e sua chamada no
pode conter query string.
Quando a transferncia ocorre, a URL mostrada no browser no muda
porque o redirecionamento ocorre no servidor, ao contrrio do que
ocorre quando se utilizada o mtodo Response.Redirect(), provocando
melhor performance.
Por padro, o mtodo Server.Transfer() no repassa os dados do
formulrio e do query string do request da pgina original para a
pgina que est sendo chamada. Entretanto, esses valores podem ser
mantidos desde que seja informado o valor true como segundo
argumento da chamada do mtodo Server.Transfer().
A utilizao do mtodo Server.Transfer um pouco mais
complexo. Nele voc expe os valores que deseja acessar em outra
pgina como propriedade de uma classe. Por isto voc ter que definir
via cdigo as propriedades na classe. uma maneira mais elegante de
passar valores.
Deve-se definir duas propriedades: Nome e Email. em form1.aspx
ASP.NET - Karina Oliveira

Usando Server.Transfer()
No arquivo Login.aspx.cs:
Definindo duas propriedades como pblicas!
public String Username
{
get
{
return userTextBox.Text;
}
}
public String Password
{
get
{
return passwordTextBox.Text;
}
}
ASP.NET - Karina Oliveira

Usando Server.Transfer()
No arquivo Login.aspx.cs:
private void sendButton_Click(object sender,System.EventArgs e)
{
/* Mtodo Server Transfer */
Server.Transfer("Resposta.aspx");
}

No arquivo Resposta.aspx.cs:
private void Page_Load(object sender, System.EventArgs e)
{
/* Usando Server.Transfer */
//cria uma instncia de formulrio
WebForm1 login = (WebForm1)Context.Handler;
respostaLabel.Text = "Usando Server.Tranfer: Usurio = "
+ login.Username + " e Senha = " + login.Password;
}
ASP.NET - Karina Oliveira

10

Usando a Classe HttpContext

A classe encapsula todas as informaes


especficas sobre uma requisio HTTP. O
objeto HttpContext da requisio HTTP
atual fornece acesso aos objetos intrnsecos
Request, Response e Server para a
requisio.
Os valores armazenados em HttpContext
so validos somente durante a durao de
uma requisio.
ASP.NET - Karina Oliveira

Usando a Classe HttpContext


No arquivo Login.aspx.cs:
private void sendButton_Click(object sender,System.EventArgs e)
{
HttpContext context = HttpContext.Current;
context.Items["user"] = userTextBox.Text;
context.Items["password"] = passwordTextBox.Text;
Server.Transfer("Resposta.aspx");
}

No arquivo Resposta.aspx.cs:
private void Page_Load(object sender, System.EventArgs e)
{
HttpContext context = HttpContext.Current;
respostaLabel.Text = "Usando HTTPContext: Usurio = "
+ context.Items["user"].ToString() +

" e Senha = " +


context.Items["password"].ToString();
ASP.NET - Karina Oliveira

11

12

Usando a Classe HttpContext

ASP.NET - Karina Oliveira

13

Listando Arquivos de um Diretrio

ASP.NET - Karina Oliveira

14

Listando Arquivos de um Diretrio


Preencher uma controle ListBox com os nomes
dos arquivos de um diretrio uma tarefa
relativamente simples de ser feita mesmo em
pginas ASP.NET.

ListBox

ASP.NET - Karina Oliveira

Listando Arquivos de um Diretrio

15

No arquivo Arquivos.aspx.cs:
private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack)
{
String nomeArquivo;
ArrayList listaArquivos = new ArrayList();
String[] todosArquivos = Directory.GetFiles("C:\\temp\\images\\");
int i = 0;
while (i < todosArquivos.Length)
{
nomeArquivo = todosArquivos[i];
nomeArquivo = nomeArquivo.Replace("C:\\temp\\images\\", "");
listaArquivos.Add(nomeArquivo);
i++;
}
ListBox.DataSource = listaArquivos;
ListBox.DataBind();
}
ASP.NET - Karina Oliveira

Listando Arquivos de um Diretrio

16

Ainda ... No arquivo Arquivos.aspx.cs:


private void sendButton_Click(object sender,System.EventArgs e)
{
if(ListBox.SelectedIndex > -1)
{
fileLabel.Text = "Opo selecionada ->" +
ListBox.SelectedItem.Text;
}
}

ASP.NET - Karina Oliveira

17

Controle AdRotator
O controle AdRotator usado para exibir anncios em
sites Web.
Usa dados de anncios armazenados em arquivos XML e
seleciona aleatoriamente uma imagem para exibir e gera
um link para a pgina Web associada a imagem gerada.

ASP.NET - Karina Oliveira

18

Um pouco sobre XML

ASP.NET - Karina Oliveira

19

Um pouco sobre XML

ASP.NET - Karina Oliveira

20

Controle AdRotator

ASP.NET - Karina Oliveira

21

Cookies

ASP.NET - Karina Oliveira

22

Cookies

ASP.NET - Karina Oliveira

23

Cookies

ASP.NET - Karina Oliveira

24

Cookies

ASP.NET - Karina Oliveira

Cookies
No arquivo OptionsPage.aspx.cs:
protected Hashtable books = new Hashtable();
private void Page_Load(object sender, System.EventArgs e)
{
if ( IsPostBack ){
respostaLabel.Visible = true;
escolhaHyperLink.Visible = true;
enviarButton.Visible = false;
selectLabel.Visible = false;
selectRadioButtonList.Visible = false;
// notify user of what they have chosen
if ( selectRadioButtonList.SelectedItem != null )
{
respostaLabel.Text +=
selectRadioButtonList.SelectedItem.ToString() + ".";
bibliografiaHyperLink.Visible = true;
}else{
respostaLabel.Text = "Voc no selecionou nenhuma opo!";
}
}
}
ASP.NET - Karina Oliveira

25

Cookies
Ainda ... No arquivo OptionsPage.aspx.cs:
private void enviarButton_Click(object sender,System.EventArgs e)

{
// if choice was made by user
if ( selectRadioButtonList.SelectedItem != null )
{
string language =
selectRadioButtonList.SelectedItem.ToString();
string ISBN = books[ language ].ToString();
//Cria cookie
HttpCookie cookie = new HttpCookie( language, ISBN );
// adiciona o cookie a resposta
response.Cookies.Add( cookie );
}
}

ASP.NET - Karina Oliveira

26

Cookies
Ainda ... No arquivo OptionsPage.aspx.cs:
override protected void OnInit( EventArgs e )
{
// Adiciona valores para o Hashtable
books.Add( "C#", "0-13-062221-4" );
books.Add( "C++", "0-13-089571-7" );
books.Add( "C", "0-13-089572-5" );
books.Add( "Python", "0-13-092361-3" );
books.Add( "Visual Basic .NET", "0-13-456955-5" );
//
// CODEGEN: This call is required by
// the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit( e );
}
ASP.NET - Karina Oliveira

27

Cookies
Ainda ... No arquivo Bibliografia.aspx.cs:
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
// recupera cookies do cliente
HttpCookieCollection cookies = Request.Cookies;
// se houver cookies alm do ID Cookie, lista livros
if ( cookies != null && cookies.Count != 1 ){
for ( int i = 1; i < cookies.Count; i++ ){
bibliografiaListBox.Items.Add(
cookies[ i ].Name + " How to Program. ISBN#: " +
cookies[ i ].Value );
}
}else{
bibliografiaLabel.Text = "Nenhuma Bibliografia!";
bibliografiaListBox.Items.Clear();
bibliografiaListBox.Visible = false;
}
}
ASP.NET - Karina Oliveira

28

29

Referncias

DEITEL, Harvey M., DEITEL, Paul J. , Et


Al. C# Como Programar. So Paulo:
Pearson Education, 2003.
Dotnetjunkies http://www.asp.net/Tutorials/quickstart.aspx
Jos Carlos Macoratti http://www.macoratti.net/

ASP.NET - Karina Oliveira