Usuário com melhor resposta
Validação de campos (formulario) em C# ASP.NET

Pergunta
-
Bom Dia a todos,
Procurei em vários tópicos pela WEB e também aqui no fórum da MSDN mas não achei exatamente a resposta para meu "problema". Como estou a pouquissimo tempo aprendendo o C# estou tendo problemas para entender a estrutura, estou estudando POO e me esforçando, mas uma ajuda sempre é bem vinda certo.
O cenário que estou vivenciando é o seguinte, preciso criar um método para validar meu campos de formulário, que no caso é um cadastro de cliente. O problema é "como criar" esse método para pegar seu retorno e caso todos os campos estejam OK popular minha entidade correspondente e realizar a inserção, caso NÃO OK eu mostro o erro para o usuário. Segue o exemplo que criei até o momento:
private void verificaCampos() { #region Encerra labels de aviso if (IsPostBack) { lblAvisoEmail.Visible = false; lblAvisoSenha.Visible = false; lblAvisoConfirmaSenha.Visible = false; lblAvisoRazaoSocial.Visible = false; lblAvisoNomeFantasia.Visible = false; lblAvisoCNPJ.Visible = false; lblAvisoLogradouro.Visible = false; lblAvisoNumero.Visible = false; lblAvisoBairro.Visible = false; lblAvisoCEP.Visible = false; lblAvisoCidade.Visible = false; lblAvisoTelefone.Visible = false; lblAvisoFax.Visible = false; } #endregion #region valida Cliente //Email if (txtEmail.Text == "") { lblAvisoEmail.Visible = true; lblAvisoEmail.Text = "Campo Obrigatório"; txtEmail.Focus(); } else if (_nValidacao.ValidarEmail(txtEmail.Text) == false) { lblAvisoEmail.Visible = true; lblAvisoEmail.Text = "Email digitado é inválido"; txtEmail.Focus(); } //Senha else if (txtSenha.Text == "") { lblAvisoSenha.Visible = true; lblAvisoSenha.Text = "Campo Obrigatório"; txtSenha.Focus(); } else if (txtConfirmarSenha.Text == "") { lblAvisoConfirmaSenha.Visible = true; lblAvisoConfirmaSenha.Text = "Campo Obrigatório"; txtConfirmarSenha.Focus(); } else if (_webCliente.ConfirmaSenha(txtSenha.Text, txtConfirmarSenha.Text) == false) { txtSenha.Focus(); lblAvisoSenha.Visible = true; lblAvisoSenha.Text = "Senhas digitadas são diferentes"; lblAvisoConfirmaSenha.Visible = true; lblAvisoConfirmaSenha.Text = "Senhas digitadas são diferentes"; } #endregion #region valida Empresa //Razao Social else if (txtRazaoSocial.Text == "") { lblAvisoRazaoSocial.Visible = true; lblAvisoRazaoSocial.Text = "Campo RAZAO SOCIAL deve ser preenchido"; txtRazaoSocial.Focus(); } //Nome Fantasia else if (txtnomeFantasia.Text == "") { lblAvisoNomeFantasia.Visible = true; lblAvisoNomeFantasia.Text = "Campo NOME FANTASIA deve ser preenchido"; txtnomeFantasia.Focus(); } //CNPJ else if (txtCNPJ.Text == "") { lblAvisoCNPJ.Visible = true; lblAvisoCNPJ.Text = "Campo CNPJ deve ser preenchido"; txtCNPJ.Focus(); } //Logradouro else if (txtLogradouro.Text == "") { lblAvisoLogradouro.Visible = true; lblAvisoLogradouro.Text = "Campo LOGRADOURO deve ser preenchido"; txtLogradouro.Focus(); } //Numero else if (txtNumero.Text == "") { lblAvisoNumero.Visible = true; lblAvisoNumero.Text = "Campo NUMERO deve ser preenchido"; txtNumero.Focus(); } //Bairro else if (txtBairro.Text == "") { lblAvisoBairro.Visible = true; lblAvisoBairro.Text = "Campo BAIRRO deve ser preenchido"; txtBairro.Focus(); } //CEP else if (txtCEP.Text == "") { lblAvisoCEP.Visible = true; lblAvisoCEP.Text = "Campo CEP deve ser preenchido"; txtCEP.Focus(); } //Cidade else if (txtCidade.Text == "") { lblAvisoCidade.Visible = true; lblAvisoCidade.Text = "Campo CIDADE deve ser preenchido"; txtCidade.Focus(); } //Telefone else if (txtTelefone.Text == "") { lblAvisoTelefone.Visible = true; lblAvisoTelefone.Text = "Campo TELEFONE deve ser preenchido"; txtTelefone.Focus(); } #endregion else { /* popula Entidade de Clientes*/ _eCliente.email = txtEmail.Text; _eCliente.senha = txtSenha.Text; _eCliente.recebeEmail = chbNewsletterAssinar.Checked.ToString(); _eCliente.idTipoCliente = Convert.ToInt32(ddlTipoCliente.SelectedValue); /* popula Entidade de Empresas*/ _eEmpresa.RazaoSocial = txtRazaoSocial.Text; _eEmpresa.NomeFantasia = txtnomeFantasia.Text; _eEmpresa.CNPJ = apenasNumeros(txtCNPJ.Text); _eEmpresa.InscricaoEstadual = txtIE.Text; _eEmpresa.Logradouro = txtLogradouro.Text; _eEmpresa.Numero = Convert.ToInt32(txtNumero.Text); _eEmpresa.Complemento = txtComplemento.Text; _eEmpresa.Bairro = txtBairro.Text; _eEmpresa.CEP = apenasNumeros(txtCEP.Text); _eEmpresa.Municipio = txtCidade.Text; _eEmpresa.Estado = txtEstado.Text; _eEmpresa.Telefone = Convert.ToInt32(txtTelefone.Text); if (txtFax.Text == "") { _eEmpresa.Fax = 0; } _eEmpresa.Email = txtEmail.Text; } }
Muito Obrigado desde ja a quem puder me ajudar!
André Barbosa.
Respostas
-
Andre, você poderia tirar aquele else do método verificaCampos().
Seu método deve fazer uma coisa só.. no seu caso o método está setando os dados nos objetos o que não tem nada a ver com verificar, entende?
Mudando isso, você poderia fazer o seguinte:
public bool VerificaCampos() {
if (txtEmail.Text == "")
{
lblAvisoEmail.Visible = true;
lblAvisoEmail.Text = "Campo Obrigatório";
return false;
}//todos os outros ifs aqui sempre retornando false
return true;
}
ou seja, se todos os campos estiverem corretos, você retornará true, caso algo esteja inválido você retornará false;
Logo, você consegue fazer o seguinte no evento de click:
if (VerificaCampos()) { SalvarDados(); }
Aconselho também mudar o nome deste método para algo que explique melhor o que ele está fazendo.
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Marcado como Resposta andrebarbosa3x quarta-feira, 13 de junho de 2012 16:00
Todas as Respostas
-
De uma forma rápida você pode tirar todos os labels e criar um label geral que contenha todas as mensagens.
Mas isso depende de como estão os labels na sua view(se estão todos no topo da página ou cada uma está no lado de um campo).
http://www.linkedin.com/pub/murilo-kunze/44/191/455
-
Os labels estão posicionados a frente do campo correspondente.
Preciso na verdade retornar um status do método, exemplo caso passe pro todos os campos e eles estejam OK cai no ELSE que popula minha entidade e por último carrego um status ou algo assim... no botão gostaria de fazer um if e testar esse status, o problema é que não sei como criar um método desse tipo e também não sei pegar esse retorno.
Atenciosamente, André Barbosa.
-
Andre, você poderia tirar aquele else do método verificaCampos().
Seu método deve fazer uma coisa só.. no seu caso o método está setando os dados nos objetos o que não tem nada a ver com verificar, entende?
Mudando isso, você poderia fazer o seguinte:
public bool VerificaCampos() {
if (txtEmail.Text == "")
{
lblAvisoEmail.Visible = true;
lblAvisoEmail.Text = "Campo Obrigatório";
return false;
}//todos os outros ifs aqui sempre retornando false
return true;
}
ou seja, se todos os campos estiverem corretos, você retornará true, caso algo esteja inválido você retornará false;
Logo, você consegue fazer o seguinte no evento de click:
if (VerificaCampos()) { SalvarDados(); }
Aconselho também mudar o nome deste método para algo que explique melhor o que ele está fazendo.
http://www.linkedin.com/pub/murilo-kunze/44/191/455
- Marcado como Resposta andrebarbosa3x quarta-feira, 13 de junho de 2012 16:00
-
Andre, você poderia tirar aquele else do método verificaCampos().
Seu método deve fazer uma coisa só.. no seu caso o método está setando os dados nos objetos o que não tem nada a ver com verificar, entende?
Mudando isso, você poderia fazer o seguinte:
public bool VerificaCampos() {
if (txtEmail.Text == "")
{
lblAvisoEmail.Visible = true;
lblAvisoEmail.Text = "Campo Obrigatório";
return false;
}//todos os outros ifs aqui sempre retornando false
return true;
}
ou seja, se todos os campos estiverem corretos, você retornará true, caso algo esteja inválido você retornará false;
Logo, você consegue fazer o seguinte no evento de click:
if (VerificaCampos()) { SalvarDados(); }
Aconselho também mudar o nome deste método para algo que explique melhor o que ele está fazendo.
http://www.linkedin.com/pub/murilo-kunze/44/191/455
Murilo Kunze,
Muito obrigado pela ajuda, seguindo seu exemplo e uma orientação que recebi de um amigo (que na verdade foi a mesma coisa) eu alterei de void para bool o metodo, marquei como false meus "IFs" e apenas ao final retornei um true, no botao fiz um IF para testar o retorno, e caso true inserir os dados.
Funcionou corretamente!
Bem como eu disse estou aprendendo e isso ja somou bastante aos meus conhecimentos e a minha lógica, obrigado mais uma vez pelo seu interesse!
Caso tenha interesse em conversar mais sobre C# e etc me adc no MSN andre@proinfortec.com.br
Abraços e obrigado a todos!
Atenciosamente, André Barbosa.
-