Форма обратной связи - PullRequest
0 голосов
/ 19 марта 2012

У меня есть одна форма с кнопкой отправки в 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 - это функция отправки электронной почты.

Ответы [ 3 ]

0 голосов
/ 19 марта 2012

Вы можете использовать свойство Page.IsPostBack , чтобы проверить, является ли обратная передача или обновление страницы.

0 голосов
/ 19 марта 2012

Вы можете использовать следующую опцию:

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

При загрузке страницы

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;
   }
}

Когда пользователь обновляет страницу (ctrl + r, f5 и т. Д.) Будет GETзапрос, а не запрос POST.

РЕДАКТИРОВАТЬ другое решение

Другое решение - использовать ViewState:

 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 голосов
/ 19 марта 2012

В вашем событии page_load

if(page.isPostback==NO)
{
    //send an email
}
else
{
   //Don't send
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...