Upload
thiago-apolinar
View
214
Download
2
Embed Size (px)
Citation preview
1
ASP.NET - Karina Oliveira
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
2
ASP.NET - Karina Oliveira
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
3
ASP.NET - Karina Oliveira
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!)
4
ASP.NET - Karina Oliveira
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
5
ASP.NET - Karina Oliveira
Usando Variáveis de Sessão
• Usando o exemplo da Página de Login anterior, tem-se:
6
ASP.NET - Karina Oliveira
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");
}
7
ASP.NET - Karina Oliveira
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
8
ASP.NET - Karina Oliveira
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;}
}
9
ASP.NET - Karina Oliveira
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árioWebForm1 login = (WebForm1)Context.Handler;respostaLabel.Text = "Usando Server.Tranfer: Usuário = "
+ login.Username + " e Senha = " + login.Password;}
10
ASP.NET - Karina Oliveira
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.
11
ASP.NET - Karina Oliveira
Usando a Classe HttpContextNo 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();
}
12
ASP.NET - Karina Oliveira
Usando a Classe HttpContext
13
ASP.NET - Karina Oliveira
Listando Arquivos de um Diretório
14
ASP.NET - Karina Oliveira
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
15
ASP.NET - Karina Oliveira
Listando Arquivos de um DiretórioNo 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();}
16
ASP.NET - Karina Oliveira
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;
}
}
17
ASP.NET - Karina Oliveira
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.
18
ASP.NET - Karina Oliveira
Um pouco sobre XML
19
ASP.NET - Karina Oliveira
Um pouco sobre XML
20
ASP.NET - Karina Oliveira
Controle AdRotator
21
ASP.NET - Karina Oliveira
Cookies
22
ASP.NET - Karina Oliveira
Cookies
23
ASP.NET - Karina Oliveira
Cookies
24
ASP.NET - Karina Oliveira
Cookies
25
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 chosenif ( selectRadioButtonList.SelectedItem != null ){
respostaLabel.Text += selectRadioButtonList.SelectedItem.ToString() + "."; bibliografiaHyperLink.Visible = true;}else{ respostaLabel.Text = "Você não selecionou nenhuma opção!";}
}}
26
ASP.NET - Karina Oliveira
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 ); }}
27
ASP.NET - Karina Oliveira
Cookies
Ainda ... No arquivo OptionsPage.aspx.cs:
override protected void OnInit( EventArgs e ){
// Adiciona valores para o Hashtablebooks.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 );
}
28
ASP.NET - Karina Oliveira
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;
}}
29
ASP.NET - Karina Oliveira
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/