2012-03-19 3 views
0

asp.net 및 C#에 제출 버튼이있는 양식이 하나 있습니다. 양식은 이메일을 통해 웹 사이트 웹 마스터에게 의견을 제출하기위한 것입니다. C# 코드는 아래와 같습니다.양식 게시물 관련 관련

그러나 한 가지 문제가 있습니다. 즉, 페이지를 새로 고칠 때 다시 게시로 인해 이메일에 주석을 보냅니다. 어떻게 이것을 피할 수 있습니까? 코드는 다음과 같습니다.

protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void btnSubmit_Click(object sender, EventArgs e) 
    { 

      string body = ""; 
      //body = body + "<html><head></head><body>"; 

      body = body + "Dear Balvignan Team,\r\n"; 

      if (txtComment.Text != null) 
      { 
       body = body + "Comment: " + txtComment.Text; 
      } 



      if (SendEmail(txtEmail.Text.Trim(), "Comment", body, false) == true) 
      { 

       lblContactAcknowledge.Text = "Thank You For <br />Submitting comment."; 

       lblContactAcknowledge.Visible = true; 
       PnlTalkToUs.Visible = false; 
      } 
      else 
      { 
       lblContactAcknowledge.Visible = false; 
       PnlTalkToUs.Visible = true; 
      } 

    } 

SendEmail은 전자 메일을 보내는 기능입니다. 당신의 Page_Load 이벤트

+0

확인 페이지로드에, 그것 이잖아. – Maxymus

답변

0

if(page.isPostback==NO) 
{ 
    //send an email 
} 
else 
{ 
    //Don't send 
} 
+0

세션 변수를 사용하여 해결 된 문제 ... –

+0

@hetalgala, 좋습니다! :) 행복한 코딩! – Hemang

0

당신은 Page.IsPostBack Property이 확인의 경우 포스트 백 또는 페이지 새로 고침하는 데 사용할 수 있습니다. 사용자가 GET 요청에 대한 의지를 (등 CTRL + R, F5) 페이지를 새로 고칠 때 페이지로드

if (!Page.IsPostback) 
{ 
    if (Request.QueryString["success"] == "true") 
    { 
     lblContactAcknowledge.Text = "Thank You For <br />Submitting comment."; 

     lblContactAcknowledge.Visible = true; 
     PnlTalkToUs.Visible = false; 
    } 
    else 
    { 
     lblContactAcknowledge.Visible = false; 
     PnlTalkToUs.Visible = true; 
    } 
} 

if (SendEmail(txtEmail.Text.Trim(), "Comment", body, false) == true) 
      { 
       Response.Redirect("contact.aspx?success=true"); 
      } 
      else 
      { 
       Response.Redirect("contact.aspx"); 
      } 

하지 :

0

다음과 같은 옵션을 사용할 수 있습니다 POST 요청.

편집

또 다른 해결책은 ViewState를 사용하는 다른 솔루션 (! IsPostBack을)에 대한

public bool EmailSent 
     { 
      get 
      { 
       return ViewState["EmailSent"] != null ? (bool)ViewState["EmailSent"] : false; 
      } 
      set 
      { 
       ViewState["EmailSent"] = value; 
      } 
     } 


protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
     .... 
     if (!EmailSent) 
     { 

      if (SendEmail(txtEmail.Text.Trim(), "Comment", body, false) == true) 
      {  
       ... 
       EmailSent = true; 
      } 
      else 
      { 
       ... 
      } 
     } 
} 
+0

쿼리 문자열 매개 변수가없는 다른 솔루션? –

+0

@hetalgala, 다른 해결책을 추가했습니다. –