none
Código é executado sozinho RRS feed

  • Pergunta

  • Pessoal tenho uma página aspx, com uma form que tem um formulário para trocar senha, só que cada vez que eu do F5 na página ele executa a função do botao que troca senha!, porque isso?


    Thiii =)

    quarta-feira, 11 de julho de 2012 17:44

Respostas

Todas as Respostas

  • Posta seu código pra gente... mais isso ta com cara de PostBack...
    quarta-feira, 11 de julho de 2012 17:47
  • protected void Button1_Click(object sender, EventArgs e)
        {
                bd.CloseConnection();
                bd.CallMysql("SELECT email,senha FROM usuario_login WHERE email='" + email.Value + "';", bd.funcao.READDATA);
                if (bd.Reader.Read())
                {
                    MailMessage oEmail = new MailMessage();
                    MailAddress sDe = new MailAddress("noreply@email"); /*COLOQUE AQUI UMA CAIXA VALIDA @seudomínio PARA QUE O ENVIO SEJA REALIZADO DE MODO NORMALIZADO*/
                    MailAddress sRpt = new MailAddress("noreply@email");
    
                    oEmail.To.Add(bd.Reader.GetString(0).ToString()); //DIGITE AQUI O E-MAIL PARA O QUAL SERÁ ENCAMINHADO O FORMULARIO
                    oEmail.From = sDe;
                    oEmail.ReplyTo = sRpt;
                    oEmail.Priority = MailPriority.Normal;
                    oEmail.IsBodyHtml = true;
                    oEmail.Subject = "Cupompremiado.net - SENHA";
    
                    // Monta o corpo da mensagem a ser enviada
                    StringBuilder mensagem = new StringBuilder();
                    mensagem.Append("<div align='left' style='height: 40px'><span style='font-family: Forte; font-size: x-large;'>Cupom</span> <span style='font-family: Forte;color: #FF9933; font-size: x-large;'><font color='#e36c09'>Premiado</font>!</span></div>").Append(Environment.NewLine);
                    mensagem.Append("<font size='3'>Sua senha do cupom premiado é: <b>" + bd.Reader.GetString(1).ToString() + "</b></font><br><br>");
                    mensagem.Append("<font size='3'>Enviado: " + DateTime.Now.ToString() + "</font><br><br>");
                    mensagem.Append("<font size='3'>OBS: Este email é utilizado internamento pelo sistema e não é monitorado, favor nao responde-lo.</font><br><br>");
    
                    oEmail.Body = mensagem.ToString();
    
                    SmtpClient oEnviar = new SmtpClient();
                    oEnviar.Host = "meu smtp"; //DIGITE AQUI O NOME DO SERVIDOR DE SMTP QUE VOCÊ IRA UTILIZAR
                    oEnviar.Credentials = new System.Net.NetworkCredential("meuemail", "minha senha"); // DIGITE UM E-MAIL VÁLIDO E UMA SENHA PARA AUTENTICACAO NO SERVIDOR SMTP
                    oEnviar.Send(oEmail);
                    oEmail.Dispose();
    
                    Label1.Text = "E-mail enviado com sucesso! =)";
                    Label1.ForeColor = System.Drawing.Color.ForestGreen;
                    email.Value = "";
                }
                else
                {
                    Label1.Text = "E-mail não encontrado no sistema =(";
                    Label1.ForeColor = System.Drawing.Color.Red;
                    email.Value = "";
                }
            
            bd.CloseConnection();
        }


    Thiii =)

    quarta-feira, 11 de julho de 2012 17:55
  • Aqui está tudo OK...Posta o evento de carregamento da pagina... 
    quarta-feira, 11 de julho de 2012 17:59
  • é assim renato, quando eu carrego a página pela primeira vez posso dar quantos f5 quizer que nao tem problema, mas apartir da hora que eu escrevo algo no formulário e clico no botao, cada f5 ele simula um click no botao, nao estou entendendo.

     protected void Page_Load(object sender, EventArgs e)
        {
        }


    Thiii =)

    quarta-feira, 11 de julho de 2012 18:04
  • A tecla F5 repete a ultima operação processada no servidor, e isso é normal. EX: se a ultima operação foi de salvar um registro, ao pressionar f5 o registro será salvo novamente.

    Sua aplicação que deve tratar o erro

    Alguns artigos que vão te ajudar:

    Stop Refresh after Submitting your Request - http://www.codeproject.com/aspnet/SyncControl.asp
    http://aspalliance.com/687_Preventing_Duplicate_Record_Insertion_on_Page_Refresh
    OneClick Control - http://www.metabuilders.com/Tools/OneClick.aspx
    Evitando a re-execução de tarefas devido ao refresh de páginas - http://www.bufaloinfo.com.br/artigos/artigo150205.asp
    http://www.codeproject.com/aspnet/OneTimeClickableButton.asp

    Se ajudou não esqueça de marcar ;)


    quarta-feira, 11 de julho de 2012 18:12
  • Isso ocorre porque como você ativou o Postback, qualquer reflesh vai executar o submit novamente.

    Solução após resolver o submit redirecione para a própria pagina por exemplo.

    Response.Redirect(Request.RawUrl)

    Refresh the page after a postback action in asp.net


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    • Sugerido como Resposta EduardoPiresMVP quinta-feira, 12 de julho de 2012 17:22
    • Marcado como Resposta Thiago de bona quinta-feira, 12 de julho de 2012 20:33
    quarta-feira, 11 de julho de 2012 18:12
  • Marco deu certo sua ideia, porem as informações mostradas na tela nao removidas, "Email enviado com sucesso!" etc... entao o esquema era criar outra aspx só com a Msg

    Thiii =)

    quarta-feira, 11 de julho de 2012 18:17
  • Thiago,

    Marque as respostas que te ajudaram e se precisou complementar com algo poste aqui para compartilhar ok?

    Abç...


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    quinta-feira, 12 de julho de 2012 17:23