如果页面更改或刷新,则清除标签
Clearing label if page is changed or refreshed
我创建了一个电子邮件表单,当用户点击提交时。如果刷新页面,该页面会将自身重定向到同一页面以防止重新提交。一旦页面被重定向到自身,标签将显示 "Thank you." 问题是当我刷新页面或转到另一个页面并返回时,标签仍然显示 "Thank you," 而不是“”。有没有办法在我刷新页面或更改它时清除 Session["Results"],或者更好的解决方案?提前致谢。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Net.Mail;
public partial class Contact : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["ClickedLink"] = "Contact";
lblResults.Text = "";
if (!IsPostBack)
{
lblResults.Text = Session["Results"].ToString();
}
}
protected void btnSend_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
string fileName = Server.MapPath("~/App_Data/Contact.txt");
string mailBody = File.ReadAllText(fileName);
mailBody = mailBody.Replace("##Name##", txtName.Text);
mailBody = mailBody.Replace("##Email##", txtEmail.Text);
mailBody = mailBody.Replace("##Message##", txtMessage.Text);
MailMessage myMessage = new MailMessage();
myMessage.Subject = "Response from web site";
myMessage.Body = mailBody;
myMessage.From = new MailAddress("intern2@gmail.com", "Sender Name");
myMessage.To.Add(new MailAddress("intern2@gmail.com", "Receiver Name"));
myMessage.ReplyToList.Add(new MailAddress(txtEmail.Text));
SmtpClient mySmtpClient = new SmtpClient();
mySmtpClient.Send(myMessage);
txtName.Text = "";
txtEmail.Text = "";
txtMessage.Text = "";
}
lblResults.Text = "Thank you";
Session["Results"] = lblResults.Text;
Response.Redirect("Contact.aspx");
}
}
您可以在重定向时在查询字符串中发送消息。
protected void btnSend_Click(object sender, EventArgs e)
{
// ...
Response.Redirect("Contact.aspx?msg=Thanks");
}
在 PageLoad 上
protected void Page_Load(object sender, EventArgs e)
{
Session["ClickedLink"] = "Contact";
lblResults.Text = "";
if (!IsPostBack)
{
if (Request.QueryString["msg"] != null)
lblResults.Text = Request.QueryString["msg"];
}
}
另一种解决方案是添加一行以在使用后清除会话变量:
protected void Page_Load(object sender, EventArgs e)
{
Session["ClickedLink"] = "Contact";
lblResults.Text = "";
if (!IsPostBack)
{
lblResults.Text = Session["Results"].ToString();
Session["Results"] = null;
}
}
在 QueryString 中,用户可以手动插入一个值以显示在标签中。
我创建了一个电子邮件表单,当用户点击提交时。如果刷新页面,该页面会将自身重定向到同一页面以防止重新提交。一旦页面被重定向到自身,标签将显示 "Thank you." 问题是当我刷新页面或转到另一个页面并返回时,标签仍然显示 "Thank you," 而不是“”。有没有办法在我刷新页面或更改它时清除 Session["Results"],或者更好的解决方案?提前致谢。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Net.Mail;
public partial class Contact : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Session["ClickedLink"] = "Contact";
lblResults.Text = "";
if (!IsPostBack)
{
lblResults.Text = Session["Results"].ToString();
}
}
protected void btnSend_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
string fileName = Server.MapPath("~/App_Data/Contact.txt");
string mailBody = File.ReadAllText(fileName);
mailBody = mailBody.Replace("##Name##", txtName.Text);
mailBody = mailBody.Replace("##Email##", txtEmail.Text);
mailBody = mailBody.Replace("##Message##", txtMessage.Text);
MailMessage myMessage = new MailMessage();
myMessage.Subject = "Response from web site";
myMessage.Body = mailBody;
myMessage.From = new MailAddress("intern2@gmail.com", "Sender Name");
myMessage.To.Add(new MailAddress("intern2@gmail.com", "Receiver Name"));
myMessage.ReplyToList.Add(new MailAddress(txtEmail.Text));
SmtpClient mySmtpClient = new SmtpClient();
mySmtpClient.Send(myMessage);
txtName.Text = "";
txtEmail.Text = "";
txtMessage.Text = "";
}
lblResults.Text = "Thank you";
Session["Results"] = lblResults.Text;
Response.Redirect("Contact.aspx");
}
}
您可以在重定向时在查询字符串中发送消息。
protected void btnSend_Click(object sender, EventArgs e)
{
// ...
Response.Redirect("Contact.aspx?msg=Thanks");
}
在 PageLoad 上
protected void Page_Load(object sender, EventArgs e)
{
Session["ClickedLink"] = "Contact";
lblResults.Text = "";
if (!IsPostBack)
{
if (Request.QueryString["msg"] != null)
lblResults.Text = Request.QueryString["msg"];
}
}
另一种解决方案是添加一行以在使用后清除会话变量:
protected void Page_Load(object sender, EventArgs e)
{
Session["ClickedLink"] = "Contact";
lblResults.Text = "";
if (!IsPostBack)
{
lblResults.Text = Session["Results"].ToString();
Session["Results"] = null;
}
}
在 QueryString 中,用户可以手动插入一个值以显示在标签中。