1
ASP.NET
Conteúdo
1 Introdução
2 Criando e Executando um Exemplo de Formulário
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
2
ASP.NET
Conteúdo
4 Atividades Extras
4.1 Listando Arquivos de um Diretório
4.2 Controle AdRotator
4.3 Acompanhamento de Sessão
4.3.1 Cookies
4.3.2 HttpSessionState
ASP.NET - Karina Oliveira
3
Persistindo Valores entre WebForms
• Existem várias formas de passar valores de
uma página para outra em ASP.NET:
–
–
–
–
–
Variáveis de sessão (Session)
Método Server.Transfer
Classe HttpContext
QueryString (este já foi explicado!)
ViewState (este também já foi explicado!)
ASP.NET - Karina Oliveira
4
Usando Variáveis de Sessão
• A idéia aqui é armazenar valores para um web
form (form1.aspx) em variáveis de sessão e
acessá-las no outro web form (form2.aspx)
• Você só deve ter o cuidado de não sobrecarregar a
sessão com muitas variáveis.
• Vejamos como se faz:
– Você cria um web form com controles
– Fornece algum botão ou link para submeter o seu
formulário
– No evento Click do botão inclua uma variável de sessão
e defina cada uma com os valores dos controles que
deseja passar
– Usando o método Response.Redirect envie os valores
do formulário form1.aspx para o outro formulário
form2.aspx
ASP.NET - Karina Oliveira
5
Usando Variáveis de Sessão
• Usando o exemplo da Página de Login
anterior, tem-se:
ASP.NET - Karina Oliveira
6
Usando Variáveis de Sessão
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 = "Usuário = " + Session["user"].ToString() +
" e Senha = " + Session["password"].ToString();
Session.Remove("user");
Session.Remove("password");
}
ASP.NET - Karina Oliveira
7
Usando Server.Transfer
• O método Server.Transfer() transfere a execução de uma página
ASPX para outra página ASPX. A página ASPX chamada deve ficar
no mesmo servidor Web da página ASPX original e sua chamada não
pode conter query string.
• Quando a transferência ocorre, a URL mostrada no browser não muda
porque o redirecionamento ocorre no servidor, ao contrário do que
ocorre quando se utilizada o método Response.Redirect(), provocando
melhor performance.
• Por padrão, o método Server.Transfer() não repassa os dados do
formulário e do query string do request da página original para a
página que está sendo chamada. Entretanto, esses valores podem ser
mantidos desde que seja informado o valor true como segundo
argumento da chamada do método Server.Transfer().
• A utilização do método Server.Transfer é um pouco mais
complexo. Nele você expõe os valores que deseja acessar em outra
página como propriedade de uma classe. Por isto você terá que definir
via código 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
8
Usando Server.Transfer()
No arquivo Login.aspx.cs:
Definindo duas propriedades como públicas!
public String Username
{
get
{
return userTextBox.Text;
}
}
public String Password
{
get
{
return passwordTextBox.Text;
}
}
ASP.NET - Karina Oliveira
9
Usando Server.Transfer()
No arquivo Login.aspx.cs:
private void sendButton_Click(object sender,System.EventArgs e)
{
/* Método 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 instãncia de formulário
WebForm1 login = (WebForm1)Context.Handler;
respostaLabel.Text = "Usando Server.Tranfer: Usuário = "
+ login.Username + " e Senha = " + login.Password;
}
ASP.NET - Karina Oliveira
10
Usando a Classe HttpContext
• A classe encapsula todas as informações
específicas sobre uma requisição HTTP. O
objeto HttpContext da requisição HTTP
atual fornece acesso aos objetos intrínsecos
Request, Response e Server para a
requisição.
• Os valores armazenados em HttpContext
são validos somente durante a duração de
uma requisição.
ASP.NET - Karina Oliveira
11
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: Usuário = "
+ context.Items["user"].ToString() +
" e Senha = " +
context.Items["password"].ToString();
}
ASP.NET - Karina Oliveira
12
Usando a Classe HttpContext
ASP.NET - Karina Oliveira
13
Listando Arquivos de um Diretório
ASP.NET - Karina Oliveira
14
Listando Arquivos de um Diretório
• Preencher uma controle ListBox com os nomes
dos arquivos de um diretório é uma tarefa
relativamente simples de ser feita mesmo em
páginas ASP.NET.
ListBox
ASP.NET - Karina Oliveira
15
Listando Arquivos de um Diretório
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
16
Listando Arquivos de um Diretório
Ainda ... No arquivo Arquivos.aspx.cs:
private void sendButton_Click(object sender,System.EventArgs e)
{
if(ListBox.SelectedIndex > -1)
{
fileLabel.Text = "Opção selecionada ->" +
ListBox.SelectedItem.Text;
}
}
ASP.NET - Karina Oliveira
17
Controle AdRotator
• O controle AdRotator é usado para exibir anúncios em
sites Web.
• Usa dados de anúncios armazenados em arquivos XML e
seleciona aleatoriamente uma imagem para exibir e gera
um link para a página 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
25
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ê não selecionou nenhuma opção!";
}
}
}
ASP.NET - Karina Oliveira
26
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
27
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
28
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 além 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
29
Referências
• DEITEL, Harvey M., DEITEL, Paul J. , Et
Al. C# Como Programar. São Paulo:
Pearson Education, 2003.
• Dotnetjunkies http://www.asp.net/Tutorials/quickstart.aspx
• José Carlos Macoratti http://www.macoratti.net/
ASP.NET - Karina Oliveira
Download

ASP_NET_pratica_aula3