Artigo .net Magazine 37 - Recuperando informações sobre o browser usando controles ASP.NET

Às vezes precisamos saber se o navegador suporta cookies, JavaScript ou em quais línguas prefere receber a página para implementar localização e globalização. Essas informações podem ser facilmente obtidas com o .NET Framework.

Clique aqui para ler esse artigo em PDF.

Clique aqui para ler todos os artigos desta edição

Recuperando informações sobre o browser usando controles ASP.NET

Este artigo discute

Este artigo usa as seguintes tecnologias

·Criação de controles ASP.NET;

·Trabalhando com postbacks em controles ASP.NET;

·Interação entre código JavaScript e controles ASP.NET.

Visual Basic .NET, ASP.NET 2.0 e JavaScript

 

 

 

Freqüentemente ao criar uma página Web, precisamos de informações sobre o cliente. Às vezes precisamos saber se o navegador suporta cookies, JavaScript ou em quais línguas prefere receber a página para implementar localização e globalização. Essas informações podem ser facilmente obtidas com o .NET Framework e basicamente são o resultado entre o que o navegador envia ao servidor em seus headers HTTP e o que o .NET Framework já sabe sobre o navegador.

Dessa forma, para obter a informação se o navegador suporta cookies, tudo que temos a fazer é chamar Request.Cookies. Mas o que fazer quando as informações não são tão facilmente obtidas? Como obter a versão exata do navegador, até a última casa decimal? Como obter a resolução da tela do usuário? Essas informações estão disponíveis de maneira mais ou menos fácil, através de funções JavaScript.

Por exemplo: para obter a largura da tela em pixels, tudo que necessitamos fazer é chamar window.screen.width no cliente. Como podemos fazer para trabalhar essa informação de maneira estruturada, com um Web Control e Orientação a Objeto?  

O objetivo deste artigo é responder essas perguntas, enquanto damos uma boa olhada no modelo de controles do ASP.NET.

 

A raiz do problema: como enviar os dados do navegador ao servidor

Toda a comunicação Web acontece entre chamadas GET e POST. A única maneira de passar dados a uma página com GET é através da URL, com Query Strings. Já no POST podemos utilizar o corpo do mesmo, que permite uma gama bem maior de possibilidades. É através do POST que normalmente fazemos toda a comunicação das ações realizadas pelo usuário ao servidor e é assim que vamos enviar os dados recuperados com JavaScript no cliente para o servidor.

O maior problema é que para um POST existir, o cliente primeiro precisa receber as informações de alguma página (através de um GET ou outro POST) e que algo indique ao navegador, a necessidade de postar novamente para o servidor, que retornará uma nova página ao cliente. Sendo assim não há como evitar uma viagem a mais entre servidor e cliente quando for necessário obter algum dado que está no cliente.

Dessa forma, o ideal é colocar os dados requisitados em variáveis de sessão ou cookies temporários, a fim de evitar o processo de recuperação a cada solicitação, o que levaria a uma viagem a mais entre servidor e cliente a cada requisição.

O segredo está em enviar no código da página uma função JavaScript que faça a recuperação dos valores e então postar os mesmos através do modelo de postback do ASP.NET. Toda página ASP.NET que contenha código que não seja capaz de ser postado através de um botão Submit, terá a função doPostBack. Essa função tem a responsabilidade de enviar o formulário ao servidor com um POST (uma chamada ao método Submit) avisando à infra-estrutura do ASP.NET que controle foi responsável pela postagem, assim como eventuais argumentos.

Para isso, ela encapsula em campos hidden esses valores, normalmente identificados como EVENTTARGET e EVENTARGUMENT. Não devemos, no entanto, referenciar essa função diretamente no código JavaScript gerado no servidor. O nome da função e os seus parâmetros são criados automaticamente com uma chamada à GetPostBackEventReference do ASP.NET, garantindo que a função será colocada na página a ser renderizada.

O ideal é que toda essa funcionalidade fique encapsulada em um controle ASP.NET, simplificando o código, permitindo reutilização, e abstraindo os valores recuperados em propriedades de objeto.

 

Criando o controle ASP.NET

Vamos criar o projeto do controle e a aplicação ASP.NET. Abra o Visual Studio 2005 e clique em Create Web Site e digite o nome “InfoCliente”. Para criar o projeto do controle, clique com o botão direito na solução e escolha Add>New Project.

Controles ASP.NET geram DLLs e podem ser criados normalmente no item Class Library, mas existe um mais apropriado e que utilizaremos neste artigo. Para isso, clique em Visual Basic>Windows e selecione Web Control Library. Dê o nome de “InfoCliente.Controles” ao projeto e clique em OK (Figura 1).

 

" [...] continue lendo...

Artigos relacionados