none
Validação de campos (formulario) em C# ASP.NET RRS feed

  • 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.

    quarta-feira, 13 de junho de 2012 14:46

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
    quarta-feira, 13 de junho de 2012 15:39

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

    quarta-feira, 13 de junho de 2012 14:55
  • 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.

    quarta-feira, 13 de junho de 2012 14:58
  • 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
    quarta-feira, 13 de junho de 2012 15:39
  • 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.

    quarta-feira, 13 de junho de 2012 16:03
  • É isso ai Andre.. as pessoas mais inteligentes são aquelas que fazem mais perguntas.

    Se está aprendendo o ideal é isso mesmo. heheh.

    Qualquer coisa estamos ai.


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 13 de junho de 2012 16:16