sábado, 10 de maio de 2008

Validações no ASP.NET

É possível adicionar validações de entrada de dados em nossas páginas ASP.NET usando os controles de validação. Os controles de validação permitem validações flexíveis e customizáveis(inclusive com Regular Expression), e também de necessidades comuns a várias aplicações. Também é possível trabalhar com um sumário de erros e/ou informar por controle que não foi válido.

Os controles de validação podem ser usados com os controles ASP.NET sejam controles Html ou Web.

Os controles de validação são:


Controle

Descrição

RequiredFieldValidator

Valida que o usuário digitou ou selecionou alguma inforação no controle

CompareValidator

Compara se os dados de dois controles são as mesmas.

RangeValidator

Verifica se o dado do controle está dentro do limite inferior e superior definido.

RegularExpressionValidator

Verifica se o dado do controle está de acordo com a expressão regular definida

CustomValidator

Permite a construção de uma validação customizada do usuário utilizando uma lógica do servidor(usando C# por exemplo) e uma lógica de cliente(javascript)

Fazendo a validação

É possível utilizar também grupos de validação, desta forma é possível associar um conjunto de controles a um tipo de validação em especial. Por exemplo é possível fazer em um formulário que o botão OK faça a validação de um conjunto de controles, já o botão Recuperar Senha obrigaria o preenchimento somente do e-mail.

Há disponível na página o método GetValidators que retorna os validadores do grupo de validação definido.

Existe também o controle ValidationSummary que mostra a lista de erros gerados pelos validadores.

Quando usa-se validadores é importante verificar se o estado dos controles que usado por determinada ação está válido. Para isso há disponível:

  • Os controles de validação tem a propriedade IsValid que informa se o controle é válido

  • A página tem o método Validate, que pode receber o grupo de validação que deseja-se verificar

  • A página tem a propriedade IsValid, que informa se a validação aconteceu com sucesso

  • A página tem o método GetValidators, que pode receber o grupo de validação e retorna os controles de validação.

O momento que ocorre a validação

A validação acontece tanto em cliente quanto em servidor. Em servidor a validação acontece após a inicialização da página(depois de ler o viewstate e dados de postback) e antes que os eventos de alteração e click sejam disparados.

A validação em cliente acontece se o navegador suportar ECMAScript(Javascript). Isto melhora a interatividade, já que as validações assim que o usuário muda o foco de um controle que teve seu valor alterado.

A validação de servidor acontece mesmo que a validação em cliente esteja habilitada, já que usuários mal intencionados poderiam burlar a validação no cliente.

Mostrando as mensagens de erro

Por padrão os controles de validação não estão visíveis ao renderizar a página, e ao não atender uma validação as mensagens de erro são exibidas.

Cada controle de validação pode definir as mensagens de erro através das propriedades:

  • ErrorMessage : Define a mensagem de erro que exibida no ValidationSummary ou no próprio controle de validação caso a propriedade Text não esteja definida

  • Text : Define a mensagem de erro que é exibida no controle de validação

Os controles de validação ainda tem a propriedade Display que podem ter os valores:

  • None: a mensagem de erro não é mostrada no controle

  • Static: o espaço para a mensagem de erro é reservada no controle de validação

  • Dynamic: o espaço para a mensagem de erro é utilizado se houver algum erro

Há ainda o controle ValidationSummary que mostra todos os erros da página como sumário. É possível definir a propriedade DisplayMode:

  • List: mostra os erros em lista, onde cada mensagem de erro é uma nova linha

  • BulletList: mostra os erros como uma lista de marcadadores

  • SingleParagraph: as mensagens de erros são mostradas num único parágrafo

Há ainda as propriedades ShowMessageBox que define se as mensagens de erro serão mostradas através de uma caixa de mensagem para o usuário e a propriedade ShowSummary que define se as mensagens de erro serão mostradas como sumário.

Referências:
http://msdn.microsoft.com/en-us/library/7kh55542.aspx
http://msdn.microsoft.com/en-us/library/bwd43d0x.aspx
http://msdn.microsoft.com/en-us/library/ms178313.aspx
http://msdn.microsoft.com/en-us/library/hxet6xwx.aspx
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.validationsummary.aspx
http://quickstarts.asp.net/QuickStartv20/aspnet/doc/validation/default.aspx