Rapidinha: CustomValidators não disparam o ServerValidate quando está vazio? Veja o que pode ser aqui!
Leonel Fraga de Oliveira 12/08/2011 23:08

Veja a seguinte situação: Você tem um campo em um WebForm que é obrigatório apenas em uma determinada condição. O mesmo campo, em outra condição NÃO é de preenchimento obrigatório. Você poderia usar um RequiredFieldValidator nele, certo?

Errado! Um RequiredFieldValidator apenas irá disparar se o campo NÃO estiver preenchido. O que queremos é que numa condição X em que um textbox esteja vazio, o validator execute, e em outra não.

Para isso podemos utilizar um CustomValidator e atribuir a propriedade de argumento de evento IsValid no evento ServerValidate para que seja True se as nossas condições forem obedecidas.

Porém (sempre tem um porém!) justamente quando você quer validar quando o  campo está vazio utilizando um CustomValidator o evento ServerValidate não dispara nem a pau, mesmo você chamando diretamente o método Validate() do mesmo. E você não pode usar um RequiredFieldValidator. O que você faz, ajoelha e chora?

Com exceção do RequiredFieldValidator, TODOS os demais validators não executam quando um textbox na propriedade ControlToValidate está vazio. Este é um comportamento padrão. Vamos dar uma olhada na caixa de propriedades de um CompareValidator e um CustomValidator:

Caixa de Propriedades de um CustomValidator x CompareValidator

Além das propriedades inerentes a cada tipo de Validator, temos uma propriedade curiosa no CustomValidator: ValidateEmptyText. Se colocarmos ela em True, o evento ServerValidate irá ser executado ao verificar a propriedade IsValid da página ou outra rotina de validação. Os outros tipos de validator não validam quando o texto está vazio. Com isso podemos testar, por exemplo, a obrigatoriedade de um campo em determinada condição em nosso sistema.

Dica fácil essa, né? Quando pesquisei sobre o assunto, vi uma sugestão em que era necessário derivar uma classe do “pai” dos validators!

Espero que esta dica seja de bom proveito :)

Leonel Fraga de Oliveira Leonel Fraga de Oliveira é formado em Processamento de Dados na Faculdade de Tecnologia de São Paulo (FATEC-SP - 2002) e anteriormente em Técnico em Eletrônica, pela ETE Professor Aprígio Gonzaga (lá em 1999).
Atualmente trabalha como Analista de Sistemas na Prefeitura Municipal de São Caetano do Sul - SP
Tem como hobbies DJing (também trabalha como DJ freelancer) e ciclismo, além da manutenção dos sites NeoMatrix Light e NeoMatrix Tech.
Gosta de música eletrônica, tecnologia, cinema (super fã de Jornada nas Estrelas), gastronomia e outras coisas mais.


Compartilhe nas redes sociais

   

Deixe seu comentário

comments powered by Disqus