Validando Entrada de Usuário em Páginas da Web ASP.NET

Você pode adicionar validação de entrada a páginas da Web ASP.NET usando controles de validação.Controles de validação fornecem um mecanismo fácil de usar para todos os tipos comuns de validação padrão — por exemplo, teste de datas válidas ou de valores em um intervalo — juntamente com maneiras de se fornecer validação escrita personalizada.Além disso, controles de validação permitem a você personalizar como informações de erro são exibidas para o usuário.

Controles de validação podem ser usados com quaisquer controles colocados em um página da Web ASP.NET, incluindo controles de servidor Web e controles HTML.Para obter mais informações, consulte Visão geral sobre controles do servidor da Web do ASP.NET.

Observação de segurança:

Por padrão, páginas da Web ASP.NET verificam automaticamente entradas potencialmente mal-intencionadas.Para obter mais informações, consulte Visão Geral de Scripts Maliciosos.

Usando Controles de Validação

Você ativa validação de entrada do usuário adicionando controles de validação à sua página da mesma maneira que você adiciona outros controles de servidor.Há controles para diferentes tipos de validação, como verificação de intervalo ou correspondência de padrões.Para obter uma lista completa de tipos de validação, consulte Tipos de validação para controles de servidor do ASP.NET.Cada controle de validação referencia um controle de entrada (um controle de servidor) em outro lugar na página.Quando a entrada do usuário está sendo processada (por exemplo, quando uma página é enviada), o controle de validação testa a entrada do usuário e define uma propriedade para indicar se a entrada passou no teste.Depois que todos os controles de validação tiverem sido chamados, uma propriedade na página é definida indicando se qualquer verificação na validação falhou.

Controles de validação podem ser associados em grupos de validação de maneira que controles de validação pertencentes a um grupo comum são validados juntos.Você pode usar grupos de validação para ativar ou desativar seletivamente a validação para controles relacionados em uma página.Outras operações de validação, como exibir um controle ValidationSummary ou chamar o método GetValidators, podem fazer referência ao grupo de validações.

Você pode testar o estado da página e de controles individuais em seu próprio código.Por exemplo, você testaria o estado dos controles de validação antes de atualizar um registro de dados com informações inseridas pelo usuário.Se você detectar um estado inválido, você ignora a atualização.Geralmente, se qualquer verificação na validação falha, você pula todo o seu processamento e retorna a página para o usuário.Controles de validação que detectam erros depois produzem uma mensagem de erro que aparece na página.Você pode exibir todos os erros de validação em um local usando um controle ValidationSummary.

Observação:

Controles ligados a dados que atualizam, inserem e excluem dados, como o controles GridView,FormView,e DetailsView, automaticamente verificam que as verificações de validação passem antes de executar uma operação de atualização de dados.

Quando a Validação Ocorre

Controles de validação realizam a verificação de entrada no código do servidor.Quando o usuário envia uma página para o servidor, os controles de validação são chamados para verificar a entrada do usuário, controle por controle.Se um erro de validação for detectado em qualquer um dos controles de entrada, a página é definida em um estado inválido para que você possa testar validade antes de seu código ser executado.Validação ocorre após inicialização da página (isto é, após os dados de estado de exibição da página e de postback terem sido processados) mas antes de quaisquer manipuladores de eventos Click ou de eventos de alteração serem chamados.

Se o usuário estiver trabalhando com um navegador que ofereça suporte a ECMAScript (JavaScript), os controles de validação podem também realizar validação usando script de cliente.Isso pode melhorar o tempo de resposta na página porque erros são detectados imediatamente e mensagens de erro são exibidas assim que o usuário deixa o controle que contém o erro.Se validação do lado do cliente estiver disponível, você tem maior controle sobre o layout de mensagens de erro e pode exibir um resumo do erro em uma caixa de mensagem.Para obter mais informações, consulte Validação do lado do cliente para controles do ASP.NET Server.

ASP.NET executa validação no servidor mesmo que os controles de validação já a tenham executado no cliente, para que você possa testar validade em seus manipuladores de eventos com base no servidor.Além disso, testar novamente no servidor evita que usuários possam contornar validação desativando ou alterando a verificação no script de cliente.

Você pode chamar validação em seu próprio código, chamando o método Validate de um controle de validação.Para obter mais informações, consulte Como: Validar Programmatically for ASP.NET servidor Controls.

Validando para Várias Condições

Cada controle de validação geralmente executa um teste.No entanto, convém verificar para diversas condições.Por exemplo, você pode querer especificar que uma entrada de usuário seja necessária e que a entrada de usuário é limitada a aceitar datas em um intervalo específico.

Você pode anexar mais de um controle de validação a um controle de entrada em uma página.Nesse caso, os testes executados pelos controles são resolvidos usando um operador lógico AND, que significa que os dados inseridos pelo usuário devem passar por todos os testes a fim de serem considerados válidos.

Em alguns casos, entradas em vários formatos diferentes podem ser válidas.Por exemplo, se você está solicitando um número de telefone, você pode permitir aos usuários que digitem um número local, um número de outra cidade, ou um número de outro país.Usar vários controles de validação não funcionaria nesta instância porque a entrada de usuário deve passar por todos os testes para que seja válido.Para realizar esse tipo de teste — uma operação OR lógica onde somente um teste deve passar — Use o controle de validação RegularExpressionValidator e especifique vários padrões válidos dentro do controle.Como alternativa, você pode usar o controle de validação CustomValidator e escrever seu próprio código de validação.

Exibindo Informações de Erro

Controles de validação não são normalmente visíveis na página processada.Entretanto, se o controle detectar um erro, ele exibirá o texto de mensagem de erro que você especificar.A mensagem de erro pode ser exibida em uma variedade de formas, como listado na tabela a seguir.

Método de exibição

Descrição

Interno

Individualmente cada controle de validação pode exibir uma mensagem de erro local (normalmente ao lado do controle onde ocorreu o erro).

Resumo

Erros de validação podem ser coletados e exibidos em um local — por exemplo, na parte superior da página.Essa estratégia é usada com frequência em combinação com exibição de uma mensagem ao lado dos campos de entrada com erros.Se o usuário estiver usando o Internet Explorer 4.0 ou posterior, o resumo pode ser exibido em uma caixa de mensagem.

Se você estiver usando grupos de validação, você precisa de um controle ValidationSummary para cada grupo separado.

Interno e Resumo

A mensagem de erro pode ser diferente no resumo e no local.Você pode usar esta opção para mostrar uma mensagem de erro menor no local, com mais detalhes no resumo.

Personalizado

Você pode personalizar a exibição de mensagem de erro por captura das informações de erro e criação de suas próprias saídas.

Se você usar as opções de exibição no local ou resumo, você pode formatar o texto da mensagem de erro usando HTML.

Observação de segurança:

Se você criar mensagens de erro personalizadas, certifique-se que você não exiba informações que possa ajudar um usuário mal-intencionado a comprometer seu aplicativo.Para obter mais informações, consulte Como: Exibição Safe erro Messages.

Modelo de Objeto de Validação

Você pode interagir com controles de validação usando o modelo de objeto que é exposto por controles individuais de validação e por página.Cada controle de validação expõe sua própria propriedade IsValid que você pode testar para determinar se um teste de validação passou ou falhou para esse controle.A página também expõe uma propriedade IsValid que resume o estado IsValid de todos os os controles de validação na página.Esta propriedade permite a você executar um teste para determinar se você pode prosseguir com seu processamento.

A página também expõe uma coleção Validators contendo uma lista de todos os os controles de validação na página.Você pode fazer loop através esta coleção para examinar o estado de controles de validação individuais.

Observação:

Há algumas diferenças no modelo de objeto para validação do lado do cliente.Para obter mais informações, consulte Validação do lado do cliente para controles do ASP.NET Server.

Personalizando a Validação

Você pode personalizar o processo de validação das seguintes maneiras:

  • Você pode especificar o formato, texto e localização de mensagens de erro.Além disso, você pode especificar se as mensagens de erro aparecem individualmente ou como um resumo.

  • Você pode criar validação personalizada usando o controle CustomValidator.O controle chama sua lógica mas caso contrário, funções como outros controles de validação da configuração de estado de erro exibem mensagens de erro e assim por diante.Isso fornece uma maneira fácil para criar lógica de validação personalizada enquanto estiver usando na estrutura de validação da página.

  • Para validação do lado do cliente, você pode interceptar a chamada de validação e substituir ou adicionar sua própria lógica de validação.

Consulte também

Outros recursos

Controles de Validação do ASP.NET