Email resent on page refresh

Discussion in 'ASP .Net Web Controls' started by Morris Neuman, Jun 30, 2009.

  1. Hi,
    My page has several textbox fields and a submit button. I have attempted to
    reset the textbox fields to nulls after the email is sent. However, when the
    user clicks on the page refresh button, though the textbox fields are empty,
    another email gets sent (the email contains the fields previously entered in
    the fields.

    How do I set the fields to null and not have the email resent on page refresh?

    protected void SubmitContactForm_Button1_Click(object sender, EventArgs e)
    {
    try
    {

    string RemoteHost = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (RemoteHost == "")
    {
    RemoteHost = Request.UserHostAddress;
    }
    string EmailSubject =
    ConfigurationManager.AppSettings["ContactMsgSubject"];
    string EmailFrom =
    ConfigurationManager.AppSettings["WebMasterEmail"];
    string EmailTo = ConfigurationManager.AppSettings["SalesEmail"];
    string EmailCC = "";
    string EmailBody = "Name=" + TextBox1.Text + " Phone=" +
    TextBox2.Text + " Message=" + TextBox3.Text + " Remote Host=" + RemoteHost;

    MailMessage message = new MailMessage();

    message.From = new MailAddress(EmailFrom);

    foreach (string torec in EmailTo.Split(';'))
    {
    if (torec != "")
    {
    message.To.Add((torec));
    //message.To.Add(new MailAddress(rec));
    }
    }

    message.Subject = EmailSubject;
    message.Body = EmailBody;
    message.IsBodyHtml = true;

    SmtpClient client = new SmtpClient();

    client.Send(message);

    //Response.Redirect("index.aspx");
    TextBox1.Text = "";
    TextBox2.Text = "";
    TextBox3.Text = "";
    ClientScript.RegisterStartupScript(GetType(), "OK!",
    String.Format("alert('Email has successfully been sent to {0} and copied to
    {1}');", EmailTo.Replace("'", "\'"), EmailCC.Replace("'", "\'")), true);
    }
    catch (System.Configuration.Provider.ProviderException c)
    {
    ClientScript.RegisterStartupScript(GetType(), "Error!",
    String.Format("alert('Email has NOT been sent to {0} and copied to {1}');",
    c.Message.Replace("'", "\'")), true);
    }
    }

    protected void ResetContactForm_Button2_Click(object sender, EventArgs e)
    {
    TextBox1.Text = "";
    TextBox2.Text = "";
    TextBox3.Text = "";
    }



    <h5>Contact form</h5>
    <asp:Label id="Label1" runat="server" Text="Name"></asp:Label>

    <asp:TextBox id="TextBox1" runat="server" Width="175px"></asp:TextBox>
    <asp:Label id="Label2" runat="server" Text="Phone"></asp:Label>

    <asp:TextBox id="TextBox2" runat="server"></asp:TextBox>
    <asp:Label id="Label3" runat="server" Text="Message"></asp:Label>

    <asp:TextBox id="TextBox3" runat="server" Height="62px"
    TextMode="MultiLine" Width="318px"></asp:TextBox>
    <asp:Button id="Button1" runat="server" Text="Submit"
    onclick="SubmitContactForm_Button1_Click"/>

    <asp:Button ID="Button2" runat="server" Text="Reset"
    onclick="ResetContactForm_Button2_Click"/>
    <p> </p>

    --
    Thanks
    Morris
     
    Morris Neuman, Jun 30, 2009
    #1
    1. Advertising

  2. Hi Morris,

    >My page has several textbox fields and a submit button. I have attempted

    to
    >reset the textbox fields to nulls after the email is sent. However, when

    the
    >user clicks on the page refresh button, though the textbox fields are

    empty,
    >another email gets sent (the email contains the fields previously entered

    in
    >the fields.


    >How do I set the fields to null and not have the email resent on page

    refresh?

    From your description a user clicks refresh button on the browser and then
    clicks the retry button on the popup window right? To avoid the code in the
    button click event handler to be executed again in this case, the easiest
    way is to add the following code at the bottom of the button click event
    handler to redirect user to the same page. This will cause a get request
    got sent when user clicking the refresh button, in which case the click
    event handler will not be executed again.

    Response.Redirect("YourPage.aspx"); //add it to the end of
    SubmitContactForm_Button1_Click. Remember to replace YourPage.aspx with
    your page name.

    Please have a try and let me know if it can meet your requirement.

    Regards,
    Allen Chen
    Microsoft Online Support

    Delighting our customers is our #1 priority. We welcome your comments and
    suggestions about how we can improve the support we provide to you. Please
    feel free to let my manager know what you think of the level of service
    provided. You can send feedback directly to my manager at:
    .

    ==================================================
    Get notification to my posts through email? Please refer to
    http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#notifications.

    Note: MSDN Managed Newsgroup support offering is for non-urgent issues
    where an initial response from the community or a Microsoft Support
    Engineer within 2 business day is acceptable. Please note that each follow
    up response may take approximately 2 business days as the support
    professional working with you may need further investigation to reach the
    most efficient resolution. The offering is not appropriate for situations
    that require urgent, real-time or phone-based interactions. Issues of this
    nature are best handled working with a dedicated Microsoft Support Engineer
    by contacting Microsoft Customer Support Services (CSS) at
    http://msdn.microsoft.com/en-us/subscriptions/aa948874.aspx
    ==================================================
    This posting is provided "AS IS" with no warranties, and confers no rights.
     
    Allen Chen [MSFT], Jul 1, 2009
    #2
    1. Advertising

  3. OK. So if I redirect then I do not get duplicate email send. However I do
    not see the thank you message either. I tried the redirect after the
    clientscript however that does not show the thank you message either. I
    would like to show the thank you message and then redirect to a page. How
    can I do that?

    Response.Redirect("aboutSS-contacts.aspx");
    ClientScript.RegisterStartupScript(GetType(), "OK!",
    String.Format("alert('Thank you. Your request has been submitted to {0}');",
    EmailTo.Replace("'", "\'")), true);


    --
    Thanks
    Morris


    "Allen Chen [MSFT]" wrote:

    > Hi Morris,
    >
    > >My page has several textbox fields and a submit button. I have attempted

    > to
    > >reset the textbox fields to nulls after the email is sent. However, when

    > the
    > >user clicks on the page refresh button, though the textbox fields are

    > empty,
    > >another email gets sent (the email contains the fields previously entered

    > in
    > >the fields.

    >
    > >How do I set the fields to null and not have the email resent on page

    > refresh?
    >
    > From your description a user clicks refresh button on the browser and then
    > clicks the retry button on the popup window right? To avoid the code in the
    > button click event handler to be executed again in this case, the easiest
    > way is to add the following code at the bottom of the button click event
    > handler to redirect user to the same page. This will cause a get request
    > got sent when user clicking the refresh button, in which case the click
    > event handler will not be executed again.
    >
    > Response.Redirect("YourPage.aspx"); //add it to the end of
    > SubmitContactForm_Button1_Click. Remember to replace YourPage.aspx with
    > your page name.
    >
    > Please have a try and let me know if it can meet your requirement.
    >
    > Regards,
    > Allen Chen
    > Microsoft Online Support
    >
    > Delighting our customers is our #1 priority. We welcome your comments and
    > suggestions about how we can improve the support we provide to you. Please
    > feel free to let my manager know what you think of the level of service
    > provided. You can send feedback directly to my manager at:
    > .
    >
    > ==================================================
    > Get notification to my posts through email? Please refer to
    > http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#notifications.
    >
    > Note: MSDN Managed Newsgroup support offering is for non-urgent issues
    > where an initial response from the community or a Microsoft Support
    > Engineer within 2 business day is acceptable. Please note that each follow
    > up response may take approximately 2 business days as the support
    > professional working with you may need further investigation to reach the
    > most efficient resolution. The offering is not appropriate for situations
    > that require urgent, real-time or phone-based interactions. Issues of this
    > nature are best handled working with a dedicated Microsoft Support Engineer
    > by contacting Microsoft Customer Support Services (CSS) at
    > http://msdn.microsoft.com/en-us/subscriptions/aa948874.aspx
    > ==================================================
    > This posting is provided "AS IS" with no warranties, and confers no rights.
    >
    >
    >
    >
     
    Morris Neuman, Jul 1, 2009
    #3
  4. Hi Morris,

    >OK. So if I redirect then I do not get duplicate email send. However I

    do
    >not see the thank you message either. I tried the redirect after the
    >clientscript however that does not show the thank you message either. I
    >would like to show the thank you message and then redirect to a page. How
    >can I do that?


    In this case you can redirect user to another page to call the JavaScript
    function to show thanks and redirect user back to the original page after
    the page is loaded at client side.


    Please try following code to test:

    Default.aspx:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
    Inherits="WebApplication21._Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title></title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>

    <asp:Button ID="Button1" runat="server" onclick="Button1_Click"
    Text="Click Me" />

    </div>
    </form>
    </body>
    </html>

    Default.aspx.cs:

    public partial class _Default : System.Web.UI.Page
    {
    string EmailTo = "allen chen";
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
    //Send email.
    //When completed, redirect user to page2. Pass information via querystring

    Response.Redirect(string.Format("Page2.aspx?showthanks=1&emailto={0}",EmailT
    o));

    }
    }

    Page2.aspx:
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Page2.aspx.cs"
    Inherits="WebApplication21.Page2" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title></title>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <script type="text/javascript">
    setTimeout("Redirect()", 10);
    function Redirect() {
    window.location = "Default.aspx";
    }
    </script>
    </div>
    </form>
    </body>
    </html>

    Page2.aspx.cs:

    protected void Page_Load(object sender, EventArgs e)
    {
    //Get information passed from original page.

    string EmailTo = Request.QueryString["emailto"];
    if (!String.IsNullOrEmpty(Request.QueryString["showthanks"])
    &&
    !String.IsNullOrEmpty(Request.QueryString["emailto"])
    )
    {
    //Register JavaScript to show thanks. The redirect JavaScript is in
    //Page2.aspx

    ClientScript.RegisterStartupScript(GetType(), "OK!",
    String.Format("alert('Thank you. Your request has been submitted to
    {0}');",
    EmailTo.Replace("'", "\'")), true);


    }
    }


    Regards,
    Allen Chen
    Microsoft Online Support
     
    Allen Chen [MSFT], Jul 2, 2009
    #4
  5. Thanks Allen. Will try later. For now I am using your initial suggestion to
    redirect to another page view where I will post the thankyou message.
    --
    Thanks
    Morris


    "Allen Chen [MSFT]" wrote:

    > Hi Morris,
    >
    > >OK. So if I redirect then I do not get duplicate email send. However I

    > do
    > >not see the thank you message either. I tried the redirect after the
    > >clientscript however that does not show the thank you message either. I
    > >would like to show the thank you message and then redirect to a page. How
    > >can I do that?

    >
    > In this case you can redirect user to another page to call the JavaScript
    > function to show thanks and redirect user back to the original page after
    > the page is loaded at client side.
    >
    >
    > Please try following code to test:
    >
    > Default.aspx:
    >
    > <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
    > Inherits="WebApplication21._Default" %>
    >
    > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    >
    > <html xmlns="http://www.w3.org/1999/xhtml" >
    > <head runat="server">
    > <title></title>
    > </head>
    > <body>
    > <form id="form1" runat="server">
    > <div>
    >
    > <asp:Button ID="Button1" runat="server" onclick="Button1_Click"
    > Text="Click Me" />
    >
    > </div>
    > </form>
    > </body>
    > </html>
    >
    > Default.aspx.cs:
    >
    > public partial class _Default : System.Web.UI.Page
    > {
    > string EmailTo = "allen chen";
    > protected void Page_Load(object sender, EventArgs e)
    > {
    >
    > }
    >
    > protected void Button1_Click(object sender, EventArgs e)
    > {
    > //Send email.
    > //When completed, redirect user to page2. Pass information via querystring
    >
    > Response.Redirect(string.Format("Page2.aspx?showthanks=1&emailto={0}",EmailT
    > o));
    >
    > }
    > }
    >
    > Page2.aspx:
    > <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Page2.aspx.cs"
    > Inherits="WebApplication21.Page2" %>
    >
    > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    >
    > <html xmlns="http://www.w3.org/1999/xhtml" >
    > <head runat="server">
    > <title></title>
    > </head>
    > <body>
    > <form id="form1" runat="server">
    > <div>
    > <script type="text/javascript">
    > setTimeout("Redirect()", 10);
    > function Redirect() {
    > window.location = "Default.aspx";
    > }
    > </script>
    > </div>
    > </form>
    > </body>
    > </html>
    >
    > Page2.aspx.cs:
    >
    > protected void Page_Load(object sender, EventArgs e)
    > {
    > //Get information passed from original page.
    >
    > string EmailTo = Request.QueryString["emailto"];
    > if (!String.IsNullOrEmpty(Request.QueryString["showthanks"])
    > &&
    > !String.IsNullOrEmpty(Request.QueryString["emailto"])
    > )
    > {
    > //Register JavaScript to show thanks. The redirect JavaScript is in
    > //Page2.aspx
    >
    > ClientScript.RegisterStartupScript(GetType(), "OK!",
    > String.Format("alert('Thank you. Your request has been submitted to
    > {0}');",
    > EmailTo.Replace("'", "\'")), true);
    >
    >
    > }
    > }
    >
    >
    > Regards,
    > Allen Chen
    > Microsoft Online Support
    >
    >
     
    Morris Neuman, Jul 2, 2009
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. brian lanning
    Replies:
    0
    Views:
    628
    brian lanning
    Jul 29, 2003
  2. Per Magnus L?vold
    Replies:
    1
    Views:
    5,210
    John C. Bollinger
    Oct 8, 2004
  3. Jonathan Turkanis

    template syntax.../ resent

    Jonathan Turkanis, Feb 18, 2005, in forum: C++
    Replies:
    2
    Views:
    418
  4. Pkenty
    Replies:
    0
    Views:
    433
    Pkenty
    May 28, 2004
  5. Jawahar Rajan
    Replies:
    1
    Views:
    309
    Adrienne
    Oct 1, 2003
Loading...

Share This Page