Usuário com melhor resposta
Validar Campos ao inserir

Pergunta
-
Olá Galera..
Toda vez salvo os campos no banco de dados... preciso antes tratar os dados dos textBox, correto?
Caso contrário diversos erros ocorrem. Por exemplo:
Tenho que verificar se o campo no Banco de Dados é obrigatório, se for, exige que tenha informação
Tenho que Verificar Se o campo é inteiro, se for, converter o texto do texbox em int32, mas se o textBox esta vazio insere Zero ou Null se permitir.
Tenho que Verificar Se o campo é String, se for, converte tudo em Maiuscula, tira espaços iniciais e finais (trim), espaços duplicados no meio, mas se o textbox estiver vazio insere null se permitir.
Esses são apenas uns exemplos
Não queria estar fazendo todas essas validacoes, em todos os formularios do sistema.
Acredito que o C# já nos permite uma automatização desses processos.
Qual seria uma maneira mais profissional de fazer isso.. de forma que não fique if else if um abaixo
Como vocês fazem? ou qual seria o ideal a se fazer?
Respostas
-
Consegui O/
Estava colocando a validacao antes de preencher a entidade cliente.
essas expressoes funcionaram
[Display(Name = "Nome do Cliente")]
[Column(Order = 1)]
[Required(ErrorMessage = "O campo {0} é obrigatório")]
[MinLength(2, ErrorMessage = "O campo {0} deve ter no mínimo {1} caracteres")]
[MaxLength(100, ErrorMessage = "O campo {0} deve ter no máximo {1} caracteres")]para email
[RegularExpression(".+\\@.+\\..+", ErrorMessage = "O campo {0} e-mail é inválido")]
porem, com data não consegui.. visto que a data é do tipo DateTime
como tenho que preencher a entidade com os valores...
o campo data que é do tipo DateTime nao vai aceitar uma data invalidaconseguintemente nao vai verificar na validacao dos annotations
vissto que a data já tem que estar validada antescomo poderia resolver isso?
- Marcado como Resposta Thales F Quintas sexta-feira, 8 de julho de 2016 17:08
-
Se você estiver trabalhando com algum componente para tratar datas sim, se estiver utilizando caixa de texto somente com a formatação esta vai aceitar qualquer valor que você digite inclusive 99/99/9999,
o que fiz foi mostrar como validar Data Annotation em Windows form, os exemplos são ilustrativos,
Se foi útil e/ou resolveu seu problema, não esqueça de marcar como resposta.
Visite : www.codigoexpresso.com.br
- Editado Código Expresso segunda-feira, 11 de julho de 2016 20:27
- Marcado como Resposta Robson William SilvaModerator terça-feira, 12 de julho de 2016 16:46
Todas as Respostas
-
Olha uma forma "ja pronta" de se fazer essas validações eu desconheço, o que você pode fazer é criar metodos que lhe auxilie nessas tarefas, como testar se o campo é nulo ou vazio, testar se é numerico e alterar para maiusculo ou minusculo, eu faço essas validações porém crio metodo para agilizar o processo mas nunca vi nada "pronto" para isso ... para campos requeridos no seu Banco de Dados você pode usar as exceptions geradas caso um campo seja NOT NULL em sua tabela, para facilitar sua validação, lembrando que uma boa validação de entrada de dados lhe pouco problemas
Junior
- Sugerido como Resposta Marcos Venicius da Costa Cruz quarta-feira, 6 de julho de 2016 11:04
-
-
utilize Data Annotation colega, você faz toda sua validação nas suas classe, veja esta postagem para entender http://www.codigoexpresso.com.br/Home/Postagem/27
Você pode também criar atributos de validação personalizados veja aqui um exemplo de atributo para validar data customizado
http://www.codigoexpresso.com.br/Home/Postagem/35
Assista as vídeo aulas deste curso http://www.codigoexpresso.com.br/Home/Postagem/32 da aula 04 a 08 falamos somente de validações, é para Asp.Net MVC com C# se estiver trabalhando somente com c# basta retira a parte para tratamento do lado do cliente JQuery.
Visite estes links que vai gosta e aprender a fazer validações com Data Annotation
Se foi útil e/ou resolveu seu problema, não esqueça de marcar como resposta.
Visite : www.codigoexpresso.com.br
- Editado Código Expresso quarta-feira, 6 de julho de 2016 18:34
- Marcado como Resposta Thales F Quintas quinta-feira, 7 de julho de 2016 12:56
- Não Marcado como Resposta DevMaicon sexta-feira, 8 de julho de 2016 06:41
-
pelo que estive lendo, a maioria das annotations nao funcionam para windows forms
cheguei tentar, mas não consegui mesmo.
por exemplo, na classe do cliente, coloquei as seguintes annotation
[Display(Name = "Nome")]
[Required(ErrorMessage = "O campo {0} é obrigatório")]
[MinLength(2, ErrorMessage = "O campo {0} deve ter no mínimo {1} caracteres")]
[MaxLength(100, ErrorMessage = "O campo {0} deve ter no máximo {1} caracteres")]
public string Nome { get; set; }entao criei o metodo de validar
public static class ValidacaoForms { public static IEnumerable<ValidationResult> getErrosValidacao(object obj) { var resultadoValidacao = new List<ValidationResult>(); var contexto = new ValidationContext(obj, null, null); Validator.TryValidateObject(obj, contexto, resultadoValidacao, true); return resultadoValidacao; } }
e no botao salvar criei essa validacao
foreach (var error in ValidacaoForms.getErrosValidacao(cliente)) { MessageBox.Show((error.ErrorMessage)); // MENSAGEM DO ERRO return; }
mas nao funciona de jeito algum
sabe o que pode ser?
-
Consegui O/
Estava colocando a validacao antes de preencher a entidade cliente.
essas expressoes funcionaram
[Display(Name = "Nome do Cliente")]
[Column(Order = 1)]
[Required(ErrorMessage = "O campo {0} é obrigatório")]
[MinLength(2, ErrorMessage = "O campo {0} deve ter no mínimo {1} caracteres")]
[MaxLength(100, ErrorMessage = "O campo {0} deve ter no máximo {1} caracteres")]para email
[RegularExpression(".+\\@.+\\..+", ErrorMessage = "O campo {0} e-mail é inválido")]
porem, com data não consegui.. visto que a data é do tipo DateTime
como tenho que preencher a entidade com os valores...
o campo data que é do tipo DateTime nao vai aceitar uma data invalidaconseguintemente nao vai verificar na validacao dos annotations
vissto que a data já tem que estar validada antescomo poderia resolver isso?
- Marcado como Resposta Thales F Quintas sexta-feira, 8 de julho de 2016 17:08
-
Colega acabei de fazer uma postagem sobre este assunto em minha pagina, lá você vai encontra uma classe pronta para fazer a validação inclusive para um campo data além de todo o procedimento para aprimorar sua aplicação e ainda pode baixar o código funcionando com validações para Windows Form Application, segue o link.
Postagem : http://www.codigoexpresso.com.br/Home/Postagem/62
Código fonte Funcional : https://github.com/CodigoExpresso/Codigo-Fonte-Rotina-Validacao-Data-Annotation-Windows-Form
Se foi útil e/ou resolveu seu problema, não esqueça de marcar como resposta.
Visite : www.codigoexpresso.com.br
- Editado Código Expresso sexta-feira, 8 de julho de 2016 17:13
-
-
Só um detalhe...
Me corrija se estiver errado por favor,
mas no meu ver a data nunca será validada.pois se tem que passar o objeto cliente.. e o atributo data é do tipo DateTime, eu já tenho que inserir uma data valida no objeto, entao ela já esta certa e nunca acusará errado na validacao.
E se no campo TextBox da data, eu inserir qualquer coisa, ele da erro ANTES da validacao, por nao conseguir inserir o texbbox no objeto DateTime. Nesse caso, ocorre erro antes da validacao.
como deveria fazer nesse caso? sabe me dizer?
- Editado DevMaicon sábado, 9 de julho de 2016 23:31
-
Se você estiver trabalhando com algum componente para tratar datas sim, se estiver utilizando caixa de texto somente com a formatação esta vai aceitar qualquer valor que você digite inclusive 99/99/9999,
o que fiz foi mostrar como validar Data Annotation em Windows form, os exemplos são ilustrativos,
Se foi útil e/ou resolveu seu problema, não esqueça de marcar como resposta.
Visite : www.codigoexpresso.com.br
- Editado Código Expresso segunda-feira, 11 de julho de 2016 20:27
- Marcado como Resposta Robson William SilvaModerator terça-feira, 12 de julho de 2016 16:46