Você está na página 1de 9

Desenvolvimento de Aplicaes para Internet

Prof. Ednilson
Dicas
Eventos - Para que um componente dispare eventos, a propriedade AutoPostBack deve estar
setada como True. Caso contrrio, ele permitir a programao do evento, mas este no ser
disparado durante a execuo da pgina.

Validadores - Os botes (Buttons, ImageButtons, LinkButtons, ...) por padro, quando executados,
disparam todos os validadores da pgina. Porm existem casos onde os botes devem ser
executados independetemente se a janela est corretamente preenchida ou no, como por
exemplo um boto "Voltar". Para isso devemos desabilitar a propriedade CausesValidation dos
botes.

Controles
A maioria dos controles do ASP.Net, so muito semelhantes ao existente no Windows Forms, como o
caso do Label, TextBox, CheckBox, RadioButton entre outros. Sero exibidos a seguir alguns
componentes importantes do ASP.Net que existem apenas no ASP.Net ou que sofreram alguma alterao
em relao ao Windows.
Botes
O ASP.Net disponibiliza alguns tipos de botes:

Button: Boto tradicional.

ImageButton: Controle Image com caractersticas de um boto (dispara o evento Click) quando o
usurio clica sobre a imagem.

LinkButton: HyperLink com funcionalidades de um boto.

Todo boto, ao ser clicado, automaticamente faz um PostBack, mesmo que ele no tenha nenhum
evento programado.

HyperLink
Cria um link de redirecionamento para outra pgina. Principais propriedades:

Text com o texto que ser exibido no link
NavigateUrl que indica a url para onde o link ir apontar,
Opcionalmente podemos alterar a propriedade ImageUrl que faz com que o link seja feito a partir
de uma imagem.

Ateno: ou usamos a propriedade NavigateUrl ou ImageUrl. Caso as duas sejam definidas somente a
ImageURL ir funcionar.
DropDownList
Componente equivalente ao ComboBox do Windows Forms.

Para popular um DropDownList, devemos inicialmente setar as propriedades DataTextField,
DataValueField e DataSource e em seguida, chamar o mtodo DataBind.
DataTextField - armazena o nome do campo que ser exibido no DropDown, normalmente uma
descrio.
DataValueFied - armazena o valor que ser identificar o item do DropDown, normalmente a chave
primria de uma tabela.
DataSource - fonte de dados. Pode ser um DataSource, datatable, e at mesmo uma coleo de
objetos.
DataBind - mtodo que efetiva o carregamento do DropDown.

O exemplo a seguir mostra o preenchimento de um DropDownList chamado ddlGrupo, onde ser exibido
uma coluna descritiva da tabela chamada grupo e o dado a ser gravado ser o cdgrupo.
Ainda neste exemplo, aps o carregamento do DropDownList, inserido um novo item a este
componente. Isso porque, ao inserirmos dados de uma tabela, ele automticamente seleciona o primeiro
registro. Para facilitar a usabilidade do usurio e forar que ele escolha um item, ao invs do sistema
algum selecionado, devemos criar um objeto ListItem, onde definimos o Texto e o Valor que ele ir
conter e aps isso, inserirmos ele no DropDownList.

Sub CarregarGrupos()
Dim objProd As New Produto
Dim novoItem As New ListItem
Try
'Preenche o DropDownList com os dados da tabela
ddlGrupo.DataTextField = "grupo"
ddlGrupo.DataValueField = "cdgrupo"
ddlGrupo.DataSource = objProd.ListarTodosGrupos
ddlGrupo.DataBind()
'Cria e insere um novo item ao DropDownList na posio 0(zero)
novoItem.Text = "Selecione"
novoItem.Value = 0
ddlGrupo.Items.Insert(0, novoItem)
'Deixa o novo item selecionado
ddlGrupo.SelectedValue = 0
Catch ex As Exception
lblErro.Text = "Erro ao carregar grupos"
Finally
objProd = Nothing
End Try
End Sub

GridView
Assim como o componente DropDownList, para carregar um GridView usamos a propriedade DataSource e
o mtodo DataBind, sendo que:
DataSource - fonte de dados. Pode ser um DataSource, DataTable, e at mesmo uma coleo de
objetos.
DataBind - mtodo que efetiva o carregamento do GridView.
O GridView um componente bastante verstil, que permite entre outras coisas incluir outros
componentes em suas colunas.
A forma mais fcil de editar as colunas de um GridView selecion-lo (clicando sobre ele) quando ento
aparecer uma pequena seta no canto superior direito. Clicando sobre a seta ser aberto um menu
lateral como mostra a figura abaixo:



Atravs deste menu, podemos editar as colunas de nosso grid, adicionar novas colunas e editar as
colunas templates.
Colunas Templates so aquelas que contm outros componentes dentro delas. Colunas templates nos
permitem obter seus dados com facilidade em tempo de execuo (via programao). Numa coluna
template, podemos inserir componentes como TextBox, Label, CheckBox, DropDownList entre outros, e
via programao, setar ou obter valores delas. Ela tambm nos permite, via assistente, definir o
carregamento automtico desses componentes com informaes provenientes da coluna de um
DataTable.

Os dois principais eventos de um GridView so: RowDataBound e RowCommand, sendo que o primeiro
disparado durante o carregamento do Grid e o segundo durante a iterao entre um usurio e uma
coluna template. Por exemplo, se um grid tem um boto em uma de suas colunas, o evento
RowCommand disparado quando um usurio clicar sobre este boto.

Validadores de campos
O Asp.Net fornece uma srie de controles para validao de campos que so realizadas do lado do
cliente.

As principais propriedades dos validadores so:

ControlToValidade: controle que ser validado;
Display: Forma de exibio pode ser:
Static - deixa reservado o espao da mensagem de erro mesmo.
Dynamic - no aloca o espao da mensagem de erro e reorganiza a tela caso um erro ocorra
e a mensagem seja disparada
None - No exibe a mensagem de erro. S devemos usar esta opo quando temos na tela
um ValidationSummary, caso contrrio a mensagem de erro no ser exibida.
ErrorMessage: Mensagem de erro que ser exibida quando o validador disparado.

Os validadores disponveis so:

RequiredFieldValidator: Valida se um campo da tela est preenchido.
RangeValidator: Valida intervalos de valores
RegularExpressionValidator: Permite validar expresses, como por exemplo formato de Url ou
E-mail. Isso feito atravs da propriedade ValidationExpression.
CompareValidator: Compara valores (exemplo: valor do campo >= 10) atravs das propriedades
Operator e ValueToCompare ou valida tipos de dados, setando a propriedade
Operator=DataTypeCheck e selecionando o tipo de dado na propriedade Type.
ValidationSummary: Lista um resumo de erros numa pgina. Duas importantes propriedades so
ShowMessageBox e ShowSummary sendo que a primeira exibe ou no os erros na forma de
MessageBox e a segunda exibe ou no uma lista de erros na pgina.

Um tutorial interessante que trata sobre o assunto pode ser encontrado em:
http://www.macoratti.net/aspnctl2.htm .
Redirecinamento
Podemos realizar o redirecinamento para outra pgina atravs de um Link na pgina, que pode ser feito
atravs de comando HTML ou controle ASP.Net, e via codificao, ou seja, durante a programao de
um evento, podemos redirecionar a execuo de uma pgina.

A seguir sero exibidos os mtodos mais comuns:

Html
Comando:<a href="Pagina1.aspx" title="Teste de ToolTip">Redirecionar p/ Pgina 1</a> onde:
O texto que estiver entre as tags <a> e </a>, aparecer na pgina como um link.
href deve receber a url para onde a pgina ser redirecionada quando clicada e
title indica o ToolTip que ser mostrado quando o mouse for pousado sobre o link.

Para inserir uma imagem em uma pgina HTML usamos a tag <img>.

possvel fazer um link em uma imagem. Para isso primeiro inserimos a tag de link <a> e dentro dela
colocamos a tag <img> de imagem como mostra o exemplo a seguir:

<a href="Pagina1.aspx" title="Teste de ToolTip"><img src="Imagens/NavForward.png" alt="Redirecionar
p/ a pgina 1"></img></a>

Sendo que, para a imagem:
src armazena o endereo da imagem que ser exibida
alt o texto que ser exibido no caso de falh no carregamento da imagem
Opcionalmente podemos colocar a propriedade border="0" para que a borda da imagem no seja
exibida.

ASP.Net
Podemos usar alguns controles para realizar redirecionamentos entre pginas. Dentre eles podemos citar
os componentes HyperLink, Button, ImageButton, LinkButton.
Para o HyperLink, podemos alterar a propriedade NavigateUrl para definir o caminho da pgina que
desejamos redirecionar.
J nos botes, podemos alterar a propriedade PostBackUrl para o caminho desejado, de forma que
quando clicado, o boto redireciona para a pgina desejada sem a necessidade de codificao alguma.
Durante a programao, se houver necessidade, tambm podemos realizar um redirecionamento atravs
do comando Response.Redirect("PaginaRedirecionada.aspx"), onde no lugar de
"PaginaRedirecionada.aspx" podemos colocar qualquer url.

Viso Geral sobre o Gerenciamento de Estado do ASP.NET
Uma nova instncia da classe da pgina Web criada sempre que a pgina for lanada para o servidor.
Em programao Web tradicional, isso normalmente significa que todas as informaes associadas com a
pgina e os controles na pgina seriam perdidos a cada processamento. Por exemplo, se um usurio
inserir informaes em um caixa de texto, essas informaes poderiam ser perdidas no processamento do
navegador.

Para superar essa limitao inerente da programao tradicional da Web, o ASP.NET inclui vrias opes
que ajudam a preservar dados em uma base por pgina e todo o aplicativo continuamente. Esses
recursos so:

ViewState (Estado de Exibio)
ControlState (Estado de controle)
Hidden Fields (Campos ocultos)
Cookies
Query Strings(String de consulta da url)
Application State (Estado do Aplicativo)
Session State (Estado da sesso)
Profile Properties (Propriedades de Perfil)

Cada uma das opes acima tem diferentes caractersticas e podem oferecer vantagens e
desvantagens, dependendo do cenrio em que sero utilizadas. A seguir, cada uma dessas opes ser
apresentada de forma mais detalhada, e estaro agrupadas de acordo com o local de armazenamento
das informaes, ou seja, no Cliente ou no Servidor.

Opes de Gerenciamento de Estado Baseado no Cliente
Nesses casos, as informaes do gerenciamento de estado so armazenadas na prpria pgina ou no
computador cliente. Nenhuma informao mantida no servidor. Pertencem a este grupo: View State,
Control State, Hidden Fields, Cookies, e Query Strings.

ViewState
O ViewState um objeto para armazenamento de valores entre os postbacks que uma pgina pode
sofrer. Esse o mtodo padro que as pginas Asp.Net usam para manter os valores das propriedades
de controles entre os postbacks.

Quando a pgina processada, o estado atual da pgina e controles armazenado em uma string e
salvo na pgina como um campo oculto. A cada Post Back a pgina analisa o ViewState na inicializao
da pgina e restaura informaes de propriedades de controles na pgina.

possvel armazenar suas prprias informaes no ViewState de uma pgina. Porm, por estar do lado
do cliente, e junto pgina, no se deve armazenar informaes sigilosas neste campo.

O ViewState de um controle da pgina pode ser desabilitado atravs da propriedade EnableViewState.

Quanto maior o ViewState de uma pgina, maior ser seu tempo de carregamento.

Para gravar valores em um ViewState, basta utilizar a sintaxe: ViewState.Add(nome, Joo) ou
simplesmente ViewState(nome) = Joo. Onde nome a chave que ser usada para armazenar, ou
seja, aonde ser armazenado a informao e o nome Joo o que ser armazenado.

ControlState
Recurso incorporado a partir do Asp.Net 2.0, a propriedade ControlState permite persistir informaes da
propriedade que so especficas para um controle e no podem ser desativadas, como a propriedade
ViewState.

Hidden Fields (campos ocultos)
O ASP.NET permite que voc armazene informaes em um controle HiddenField, que funciona como um
campo oculto padro HTML. Um campo oculto no fica visvel no navegador, mas voc pode definir suas
propriedades assim como faria com um controle padro. Quando uma pgina enviada para o servidor, o
contedo de uma campo oculto enviado na coleo de formulrio HTTP junto com os valores de outros
controles. Um campo oculto atua como um repositrio de quaisquer informaes especficas da pgina
que voc deseja armazenar diretamente na pgina.

Um controle HiddenField armazena uma nica varivel em sua propriedade Value e deve ser
explicitamente adicionado pgina.

Ateno: Pela facilidade em se ver e modificar o contedo de um campo oculto, no armazene
informaes sigilosas nele. Tambm no guarde nele informaes que seu aplicativo se baseie para
funcionar corretamente.

Cookies
Um cookie uma pequena quantidade de dados (texto) que fica armazenado no cliente. Os cookies
podem ser temporrios (com datas e horrios especficos de expirao) ou persistentes.

Voc pode usar cookies para armazenar informaes sobre um determinado cliente, sesso ou aplicativo.
Os cookies so salvos na mquina do cliente, e quando o navegador solicita uma pgina, o cliente envia
as informaes no cookie junto com as informaes de solicitao. O servidor pode ler o cookie e extrair
o valor.

O navegador pode enviar os dados de volta somente para o servidor que criou o cookie. Entretanto, os
usurios mal-intencionados podem acessar cookies e ler seu contedo. recomendvel que voc no
armazene informaes sigilosas, como um nome de usurio ou a senha, em um cookie. Em vez disso,
armazene um token no cookie que identifica o usurio, e em seguida, use o smbolo para consultar as
informaes sigilosas no servidor.

A forma mais simples de se criar/atualizar um cookie :

Response.Cookies("usuario").Value = "teste" 'Cria um cookie usurio e joga o valor
"teste" nele
Response.Cookies("usuario").Expires = Date.Now.AddDays(1) 'Opcional: Indica a data de
expirao de um cookie. No exemplo, o cookie dever ser expirado 1 dia aps a data de
criao

J para se ler o contedo de um cookie:
If Request.Cookies("usuario") IsNot Nothing Then
Dim usu As String
usu = Request.Cookies("usuario").Value
End If

QueryString
Uma QueryString uma informao acrescentada ao final da URL da pgina. Uma QueryString de
consulta tpica pode parecer com o exemplo a seguir:
http://www.intranet.anchieta.br/webmagistral/Intranet/biblioteca/bib_resposta.asp?cod_obra=36894&no
meCidade=JUNDIAI

No caminho da URL acima, a QueryString comea com um ponto de interrogao (?) e inclui dois pares
atributo/valor, uma chamada "cod_obra e o outra chamado "nomeCidade".

QueryString fornecem uma maneira simples, mas limitada de manter informaes do estado. Elas so uma
maneira fcil para passar informaes de uma pgina para outra, como passar um nmero de produto de
uma pgina para outra pgina onde ele ser processado. No entanto, alguns navegadores e dispositivos
clientes impem um limite no comprimento da URL de 2083 caracteres. Outro problema que informaes
que so passadas em uma QueryString podem ser violadas ou alteradas por usurios mal-intencionados.
Portanto, no se deve transmitir dados importantes ou confidenciais via QueryString. Alm disso, um
usurio pode marcar um URL ou enviar o URL para outros usurios, assim, passando as informaes
juntamente com ele.

Exemplo de leitura de uma QueryString:

Dim codigo As Integer
codigo = CInt(Request("cod_obra"))

Opes de gerenciamento de estado baseado em servidor
O ASP.NET oferece algumas maneiras de se manter informaes do estado no servidor. Com o
gerenciamento de estado baseado no servidor, voc pode diminuir a quantidade de informaes enviadas
para o cliente para preservar o estado, mas em contra-partida, isso pode ter um alto custo para o
servidor. As sees a seguintes descrevem trs recursos de gerenciamento de estado com base em
servidor: Application State, Session State e Profile Properties.

Por estarem armazenadas no servidor, as informaes contidas nesses gerenciadores de estados so
seguras.

Application State (Estado do Aplicativo)
Application State uma instncia de classe HttpApplicationState para cada aplicativo ativo da Web.
O estado do aplicativo um mecanismo de armazenamento global acessvel de todas as pginas de
aplicativo da Web. Assim, o estado do aplicativo til para armazenar informaes que precisam ser
mantidas entre requisies de ida e volta ao servidor e solicitaes de pginas.

O estado do aplicativo armazenado em um dicionrio chave/valor que criado durante cada solicitao
para uma determinada URL. Voc pode adicionar suas informaes especficas do aplicativo para essa
estrutura para armazen-lo entre solicitaes de pgina.

Por ser comum a toda a aplicao e no a cada usurio, s se deve utilizar o Application quando a
informao a ser armazenada de interesse comum a todas as instncias utilizadas.

Session State (Estado da sesso)
Uma Session uma instncia de classe HttpSessionState para cada aplicativo ativo da Web.

Uma Session funciona como o Application State visto anteriormente, exceto pelo fato de que ele
delimitado para a sesso atual do navegador. Se diferentes usurios estiverem usando o seu aplicativo,
cada sesso de usurio ter um Session State diferente. Alm disso, se um usurio deixa o seu aplicativo
e, em seguida, se conecta novamente ao aplicativo, criada uma nova sesso ao usurio, e esta ser
diferente da primeira sesso.

Uma sesso estruturada como um dicionrio de chave/valor para armazenar informaes especficas
que precisam ser mantidas entre requisies ao servidor e solicitaes de pginas.
Voc pode usar estado de sesso para realizar as seguintes tarefas:
Identificar exclusivamente o navegador ou solicitaes do dispositivo cliente e mape-los para uma
instncia individual da sesso no servidor.
Armazenar dados especficos da sesso no servidor para uso nas vrias solicitaes do navegador
ou dispositivo cliente dentro da mesma sesso.
Disparar eventos de gerenciamento apropriados para a sesso.

Uma vez que voc adicionar suas informaes especficas do aplicativo numa sesso, o servidor gerencia
este objeto. Dependendo das opes que voc especificar, informaes da sesso podem ser
armazenadas em um servidor fora de processo, ou em um computador executando o Microsoft SQL
Server.

Para se gravar valores em uma Sesso, podemos usar os seguintes comandos:
Session.Add("usuario", "Maria") ou Session("usuario") = "Maria"

J para se ler o contedo de uma Sesso usa-se:
Dim usu As String
If Session("usuario") IsNot Nothing Then 'Verifica se a sesso existe
usu = Session("usuario").ToString
End If
Profile Properties
O ASP.NET oferece um recurso denominado Profile Properties, que permite armazenar dados especficos
de um usurio. Este recurso se assemelha Session, exceto que os dados de perfil no so perdidos
quando uma sesso de usurio expira. O recurso do perfil armazenado em um formato persistente e
associado a um usurio individual. O perfil ASP.NET permite gerenciar informaes do usurio sem exigir
que seja criado e mantido seu prprio banco de dados. possvel armazenar objetos de qualquer tipo no
perfil. O recurso de perfil ASP.NET fornece um sistema de armazenamento genrico que permite que
voc defina e mantenha praticamente qualquer tipo de dados enquanto ainda torna os dados disponveis
de uma maneira segura.

Projeto desenvolvido em aula - Loja Virtual
A soluo desenvolvida em sala, composta de 2 projetos. O LojaVirtual, um projeto do tipo ASP.NET
Web Application e que ir conter as pginas e toda a programao Web. J o projeto Loja, um projeto
do tipo Class Library e ser responsvel pela regra de negcio e acesso ao banco de dados.

Uma vez criado os 2 projetos, necessrio que o projeto que ASP.NET - LojaVirtual, referencie a DLL
gerada pelo projeto Loja (ClassLibrary). Para isso, basta primeiro compilar a Soluo (Build->Build
Solution) e em seguida ir ao projeto LojaVirtual, e referenciar o projeto Loja (My Project do Loja Virtual
-> References -> Add -> Projects).

Feito isso para as pginas do projeto LojaVirtual que forem utilizar a DLL gerada pelo projeto Loja,
interessante incluir no incio da pgina o comando Imports Loja. Com isso todos os mtodos e
propriedades pblicos da DLL estaro disponveis para uso.

Links para estudos
Html
W3C - HTML 4.01 Specification: http://www.w3.org/TR/html401/
ICMC-USP - Tutorial HTML: http://www.icmc.usp.br/ensino/material/html/
Truques e dicas Tutoriais de Html: http://www.truquesedicas.com/tutoriais/html/00001a.htm

Css
W3C - Cascading Style Sheets: http://www.w3.org/Style/CSS/
HTML.Net - Tutorial CSS: http://www.pt-br.html.net/tutorials/css/
W3Schools - CSS Tutorial: http://www.w3schools.com/css/

JavaScript
W3Schools - JavaScript Tutorial: http://www.w3schools.com/js/default.asp
W3Schools - JavaScript Reference: http://www.w3schools.com/jsref/default.asp
Truques e Dicas Tutorial de Java Script: http://www.truquesedicas.com/tutoriais/javascript/
Mozilla Javascript: http://developer.mozilla.org/en/docs/About_JavaScript
MSDN Javascript: http://msdn2.microsoft.com/en-us/library/ms970435.aspx