Desenvolvimento Web Com ASP.net - Dicas Gerais

9
Desenvolvimento de Aplicações para Internet Prof. Ednilson Dicas Eventos - Para que um componente dispare eventos, a propriedade AutoPostBack deve estar setada como True. Caso contrário, ele permitirá a programação do evento, mas este não será disparado durante a execução da página. Validadores - Os botões (Buttons, ImageButtons, LinkButtons, ...) por padrão, quando executados, disparam todos os validadores da página. Porém existem casos onde os botões devem ser executados independetemente se a janela está corretamente preenchida ou não, como por exemplo um botão "Voltar". Para isso devemos desabilitar a propriedade CausesValidation dos botões. Controles A maioria dos controles do ASP.Net, são muito semelhantes ao existente no Windows Forms, como é o caso do Label, TextBox, CheckBox, RadioButton entre outros. Serão exibidos a seguir alguns componentes importantes do ASP.Net que existem apenas no ASP.Net ou que sofreram alguma alteração em relação ao Windows. Botões O ASP.Net disponibiliza alguns tipos de botões: Button: Botão tradicional. ImageButton: Controle Image com características de um botão (dispara o evento Click) quando o usuário clica sobre a imagem. LinkButton: HyperLink com funcionalidades de um botão. Todo botão, ao ser clicado, automaticamente faz um PostBack, mesmo que ele não tenha nenhum evento programado. HyperLink Cria um link de redirecionamento para outra página. 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. Atenção: ou usamos a propriedade NavigateUrl ou ImageUrl. Caso as duas sejam definidas somente a

Transcript of Desenvolvimento Web Com ASP.net - Dicas Gerais

  • Desenvolvimento de Aplicaes para Internet

    Prof. Ednilson

    Dicas

    Eventos - Para que um componente dispare eventos, a propriedade AutoPostBack deve estarsetada como True. Caso contrrio, ele permitir a programao do evento, mas este no serdisparado 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 serexecutados independetemente se a janela est corretamente preenchida ou no, como porexemplo um boto "Voltar". Para isso devemos desabilitar a propriedade CausesValidation dosbotes.

    Controles

    A maioria dos controles do ASP.Net, so muito semelhantes ao existente no Windows Forms, como ocaso do Label, TextBox, CheckBox, RadioButton entre outros. Sero exibidos a seguir algunscomponentes importantes do ASP.Net que existem apenas no ASP.Net ou que sofreram alguma alteraoem 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 ousurio 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 nenhumevento 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 umadescrio.

    DataValueFied - armazena o valor que ser identificar o item do DropDown, normalmente a chaveprimria de uma tabela.

    DataSource - fonte de dados. Pode ser um DataSource, datatable, e at mesmo uma coleo deobjetos.

    DataBind - mtodo que efetiva o carregamento do DropDown. O exemplo a seguir mostra o preenchimento de um DropDownList chamado ddlGrupo, onde ser exibidouma 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 estecomponente. Isso porque, ao inserirmos dados de uma tabela, ele automticamente seleciona o primeiroregistro. Para facilitar a usabilidade do usurio e forar que ele escolha um item, ao invs do sistemaalgum selecionado, devemos criar um objeto ListItem, onde definimos o Texto e o Valor que ele irconter 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 TryEnd Sub

    GridView

    Assim como o componente DropDownList, para carregar um GridView usamos a propriedade DataSource eo mtodo DataBind, sendo que:

    DataSource - fonte de dados. Pode ser um DataSource, DataTable, e at mesmo uma coleo deobjetos.

  • DataBind - mtodo que efetiva o carregamento do GridView.

    O GridView um componente bastante verstil, que permite entre outras coisas incluir outroscomponentes em suas colunas.A forma mais fcil de editar as colunas de um GridView selecion-lo (clicando sobre ele) quando entoaparecer uma pequena seta no canto superior direito. Clicando sobre a seta ser aberto um menulateral como mostra a figura abaixo:

    Atravs deste menu, podemos editar as colunas de nosso grid, adicionar novas colunas e editar ascolunas templates.Colunas Templates so aquelas que contm outros componentes dentro delas. Colunas templates nospermitem obter seus dados com facilidade em tempo de execuo (via programao). Numa colunatemplate, podemos inserir componentes como TextBox, Label, CheckBox, DropDownList entre outros, evia programao, setar ou obter valores delas. Ela tambm nos permite, via assistente, definir ocarregamento automtico desses componentes com informaes provenientes da coluna de umDataTable. 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 umacoluna template. Por exemplo, se um grid tem um boto em uma de suas colunas, o eventoRowCommand 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 docliente. 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 telaum 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 propriedadesOperator e ValueToCompare ou valida tipos de dados, setando a propriedadeOperator=DataTypeCheck e selecionando o tipo de dado na propriedade Type.

    ValidationSummary: Lista um resumo de erros numa pgina. Duas importantes propriedades soShowMessageBox e ShowSummary sendo que a primeira exibe ou no os erros na forma deMessageBox 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 feitoatravs de comando HTML ou controle ASP.Net, e via codificao, ou seja, durante a programao deum evento, podemos redirecionar a execuo de uma pgina. A seguir sero exibidos os mtodos mais comuns:

    Html

    Comando:Redirecionar p/ Pgina 1 onde:

    O texto que estiver entre as tags e , 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 . possvel fazer um link em uma imagem. Para isso primeiro inserimos a tag de link e dentro delacolocamos a tag de imagem como mostra o exemplo a seguir:

    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 citaros componentes HyperLink, Button, ImageButton, LinkButton.Para o HyperLink, podemos alterar a propriedade NavigateUrl para definir o caminho da pgina quedesejamos redirecionar.J nos botes, podemos alterar a propriedade PostBackUrl para o caminho desejado, de forma quequando 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 atravsdo 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 apgina e os controles na pgina seriam perdidos a cada processamento. Por exemplo, se um usurioinserir informaes em um caixa de texto, essas informaes poderiam ser perdidas no processamento donavegador. Para superar essa limitao inerente da programao tradicional da Web, o ASP.NET inclui vrias opesque ajudam a preservar dados em uma base por pgina e todo o aplicativo continuamente. Essesrecursos 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 edesvantagens, dependendo do cenrio em que sero utilizadas. A seguir, cada uma dessas opes serapresentada de forma mais detalhada, e estaro agrupadas de acordo com o local de armazenamentodas 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 nocomputador 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 podesofrer. Esse o mtodo padro que as pginas Asp.Net usam para manter os valores das propriedadesde controles entre os postbacks.

  • Quando a pgina processada, o estado atual da pgina e controles armazenado em uma string esalvo na pgina como um campo oculto. A cada Post Back a pgina analisa o ViewState na inicializaoda pgina e restaura informaes de propriedades de controles na pgina. possvel armazenar suas prprias informaes no ViewState de uma pgina. Porm, por estar do ladodo 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) ousimplesmente ViewState(nome) = Joo. Onde nome a chave que ser usada para armazenar, ouseja, 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 dapropriedade que so especficas para um controle e no podem ser desativadas, como a propriedadeViewState.

    Hidden Fields (campos ocultos)

    O ASP.NET permite que voc armazene informaes em um controle HiddenField, que funciona como umcampo oculto padro HTML. Um campo oculto no fica visvel no navegador, mas voc pode definir suaspropriedades assim como faria com um controle padro. Quando uma pgina enviada para o servidor, ocontedo de uma campo oculto enviado na coleo de formulrio HTTP junto com os valores de outroscontroles. Um campo oculto atua como um repositrio de quaisquer informaes especficas da pginaque voc deseja armazenar diretamente na pgina. Um controle HiddenField armazena uma nica varivel em sua propriedade Value e deve serexplicitamente adicionado pgina. Ateno: Pela facilidade em se ver e modificar o contedo de um campo oculto, no armazeneinformaes sigilosas nele. Tambm no guarde nele informaes que seu aplicativo se baseie parafuncionar corretamente.

    Cookies

    Um cookie uma pequena quantidade de dados (texto) que fica armazenado no cliente. Os cookiespodem 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 enviaas informaes no cookie junto com as informaes de solicitao. O servidor pode ler o cookie e extrairo valor. O navegador pode enviar os dados de volta somente para o servidor que criou o cookie. Entretanto, osusurios 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 asinformaes 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" neleResponse.Cookies("usuario").Expires = Date.Now.AddDays(1) 'Opcional: Indica a data deexpirao de um cookie. No exemplo, o cookie dever ser expirado 1 dia aps a data decriao 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 deconsulta tpica pode parecer com o exemplo a seguir:http://www.intranet.anchieta.br/webmagistral/Intranet/biblioteca/bib_resposta.asp?cod_obra=36894&nomeCidade=JUNDIAI No caminho da URL acima, a QueryString comea com um ponto de interrogao (?) e inclui dois paresatributo/valor, uma chamada "cod_obra e o outra chamado "nomeCidade". QueryString fornecem uma maneira simples, mas limitada de manter informaes do estado. Elas so umamaneira fcil para passar informaes de uma pgina para outra, como passar um nmero de produto deuma pgina para outra pgina onde ele ser processado. No entanto, alguns navegadores e dispositivosclientes impem um limite no comprimento da URL de 2083 caracteres. Outro problema que informaesque 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, umusurio pode marcar um URL ou enviar o URL para outros usurios, assim, passando as informaesjuntamente com ele. Exemplo de leitura de uma QueryString: Dim codigo As Integercodigo = 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 ogerenciamento de estado baseado no servidor, voc pode diminuir a quantidade de informaes enviadaspara o cliente para preservar o estado, mas em contra-partida, isso pode ter um alto custo para oservidor. As sees a seguintes descrevem trs recursos de gerenciamento de estado com base emservidor: Application State, Session State e Profile Properties.

  • Por estarem armazenadas no servidor, as informaes contidas nesses gerenciadores de estados soseguras.

    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 deaplicativo da Web. Assim, o estado do aplicativo til para armazenar informaes que precisam sermantidas 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 solicitaopara uma determinada URL. Voc pode adicionar suas informaes especficas do aplicativo para essaestrutura 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 ainformao 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 aplicativoe, em seguida, se conecta novamente ao aplicativo, criada uma nova sesso ao usurio, e esta serdiferente da primeira sesso. Uma sesso estruturada como um dicionrio de chave/valor para armazenar informaes especficasque 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 umainstncia individual da sesso no servidor.

    Armazenar dados especficos da sesso no servidor para uso nas vrias solicitaes do navegadorou 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 gerenciaeste objeto. Dependendo das opes que voc especificar, informaes da sesso podem serarmazenadas em um servidor fora de processo, ou em um computador executando o Microsoft SQLServer. 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 especficosde um usurio. Este recurso se assemelha Session, exceto que os dados de perfil no so perdidosquando uma sesso de usurio expira. O recurso do perfil armazenado em um formato persistente eassociado a um usurio individual. O perfil ASP.NET permite gerenciar informaes do usurio sem exigirque seja criado e mantido seu prprio banco de dados. possvel armazenar objetos de qualquer tipo noperfil. O recurso de perfil ASP.NET fornece um sistema de armazenamento genrico que permite quevoc defina e mantenha praticamente qualquer tipo de dados enquanto ainda torna os dados disponveisde 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.NETWeb Application e que ir conter as pginas e toda a programao Web. J o projeto Loja, um projetodo 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 DLLgerada pelo projeto Loja (ClassLibrary). Para isso, basta primeiro compilar a Soluo (Build->BuildSolution) 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 epropriedades 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