Após ler um artigo do Ramon Durães "ASP.NET 2.0 - Client Callback dando mais inteligência no cliente". Fiquei pensando em fazer algo em JavaScript para validar os dados no lado cliente evitando postbacks desnecessário no servidor. Pensei a princípio em usar um método genérico em JavaScript com Expressões Regulares de modo que pudesse passar o tipo de dado validado como parâmetro.... A seguir minhas conclusões a respeito:
Apesar do artigo citado ser recomendado para Visual Studio 2005, meu trabalho foi totalmente testado em ambiente 1.1 Com Visual Studio 2003.
Diferente do artigo, no meu caso, eu disparo o evento no cliente sempre que um valor é digitado na textbox e ela perde o foco. Uma mensagem de alerta é exibida (caso o conteudo nao tenha passado na validação) e logo a seguir o controle recebe novamente foco. Achei assim, uma forma muito interessante de evitar postbacks desnecessários no servidor.
Em 1o lugar, o javascript : Vou colocar em um arquivo separado .js para que possa ser reaproveitado em outros formulários.
Pegue o arquivo validacoesgenericas.js completo aqui

Feito isso, em nosso formulario .aspx, precisaremos adicionar referencia ao nosso script :

Feito isso, agora será necessário fazer uma pequena alteração na TAG de cada textbox que será validado em nosso formulário:

Resumindo:
- Apenas o ID não me foi suficiente para fazer o javascript achar o controle, então declarei um name para o objeto.
- Apesar do controle continuar sendo Server Control, definimos o evento OnBlur pra ele e chamamos nosso Javascript criado anteriormente.
onBlur="valida(this,'email','email');"
Explicando os parâmetros do método valida:
- O 1o. parâmetro é o próprio objeto (this)
- O 2o parametro : a label que sera exibida na mensagem de erro
- O 3o parâmetro : o tipo de validação que será usada (alfabetico, alfanumerico, texto, numerico, telefone, data, email, moeda, cep, horario, uf ou sexo). Dê uma olhada no arquivo validacoesgenericas.js para entender melhor.
3. Quando o controle perde o foco, a validação é testada e caso não passe o controle recebe foco novamente

Considerações finais: de forma alguma, pretendo com isso substituir a validação no lado servidor, mas apenas complementar validando antes no cliente.
E então, o que acham ?