A validação de campos em ambiente Web é complicada pois além das habituais variáveis a serem avaliadas também há a questão de onde serão executadas, no lado do cliente ou no lado do servidor. Ambas têm seus prós e contras:
- No lado do cliente: não há transferência desnecessária de dados, entretanto, pode haver problemas relativos à compatibilidade entre navegadores, e mesmo que seja testado em todos os navegadores sempre aparecera um novo, ou menos conhecido gerando problemas na aplicação Web;
- No lado do servidor: não haverá problemas de compatibilidade. Contudo vamos transferir o problema para a conexão e transferência dos dados, se a conexão entre ambos for lenta, pode se ter perda de pacotes o que se torna desnecessário para este tipo de operação.
Para resolver estes problema o .Net framework conta com alguns componentes que auxiliam na solução deste problema. Estes componentes se encontram na Toolbox na área Validation. Como mostrado na figura abaixo.
Como qualquer outro componente da Toolbox, eles são inseridos no formulário. Sendo que este deve ser posicionado onde se deseja que a mensagem seja mostrada. Esta mensagem deve ser definida nas propriedades dos componentes, assim como o restante das configurações.
Na figura abaixo é mostrado parte de um formulário em modo Design, onde foi inserido um componente RequiredFieldValidator. Que está destacado em vermelho.
Na primeira figura são mostrados vários componentes na Toolbox, cada um deles tem um objetivo especifico e por este motivo cada um tem suas propriedades. Apesar disso há uma propriedade que é comum a esses componentes que é o caso da ControlToValidate. Nesta propriedade deve ser informado o campo do formulário que se deseja validar.
Abaixo vamos nos aprofundar um pouco em cada um destes componentes:
- CompareValidator: Este componente é utilizado para comparar valores, assegurando ambos sejam iguais, utilizado geralmente em cadastro ou validações de senhas. A principal propriedade deste componente é:
- ControlToCompare: nesta devera ser informado o campo do formulário a ser comparado com o campo informado na propriedade ControlToValidate;
- CustomValidator: Este é o mais flexível, em relação aos outros componentes, pois pode se escrever o próprio código para validar. Utilizado geralmente quando os outros componentes não corresponde à necessidade da validação.
- RangeValidator: Este será utilizado quando for necessário validar um intervalo entre dois valores. Como por exemplo: valor mínimo e valor máximo, ou validar datas como data inicial e data final, etc.
- MaximumValue e MinimumValue: estas duas propriedades devem ser informada o valor máximo e mínimo, respectivamente, do intervalo a ser validado.
- RegularExpressionValidator: Neste é possível validar os valores conforme a Expressão Regular informada. Uma expressão regular é uma forma de criar um padrão, onde, este padrão será comparado com o valor.
- ValidationExpression: Nesta propriedade deverá ser informada a expressão regular a ser comparada com o valor desejado.
- RequiredFieldValidator: Este pode ser o mais utilizado, pois ele valida se o campo foi preenchido, ou seja, se o campo estiver vazio não permitirá que o usuário prossiga.
- ValidationSummary: Este componente cria uma área no formulário onde são mostrada todas as mensagens reunidas. Estas mensagens são as mesmas que são mostradas nos componentes quando ha algo de errado com suas validações.
Abaixo temos o exemplo de um formulário com os componentes inseridos, mas somente estarão visíveis para o usuário quando ocorrer problemas no preenchimento.
Como pode ser visto na figura abaixo, onde são mostradas as mensagens definidas nas propriedades de cada componente, com informações uteis ao usuário, auxiliando na resolução do problema no preenchimento do mesmo.
Para complementar estes componentes de validação podem ser utilizados junto aos componentes do toolkit Ajax, deixando ainda mais amigável, ainda, a interação com o usuário. Mas este assunto fica para um outro post.
Chegando ao final deste post posso afirmar que estes controles de validação são muito uteis para as aplicações Web. Além de serem de fácil configuração, o que agiliza muito o trabalho do desenvolvedor, eles também podem resolver algumas questões citadas no inicio do post. Como a incompatibilidade dos navegadores.
