我有Site.Master:
<% if(Session["msg"]!=null) Response.Write(Session["msg"].ToString()); %>
我还提交表格方法:
protected void Send_Click(object sender, EventArgs e)
{
Session["msg"] = "Thx for email.";
Response.Redirect("~/Default.aspx");
}
但是现在当我刷新页面或转到另一个页面时,我仍然看到“Thx for email”。但是用户应该只看一次。
答案 0 :(得分:0)
您可以清除Session["msg"]
Page_load
之外的if(!isPostback)
或者您可以在母版页上创建标签,通过子页面访问该标签以将消息放入其中,并在页面加载中清除该标签,这将使您远离使用会话。使用Label还可以设置cssClass,允许粗体,颜色变化(红色表示错误,绿色表示成功等)。
如果你只是想要一个计划信息,你就可以使用文字控制,而不是头脑。
答案 1 :(得分:0)
这是因为Session
变量的值与会话的价值不同。
Session["msg"]
在会话中的所有页面上始终具有相同的值。
如果您希望该值仅用于重定向的页面,则可以使用querystring
。
protected void Send_Click(object sender, EventArgs e)
{
Session["msg"] = "Thx for email.";
Response.Redirect("~/Default.aspx?msg='true'");
}
然后在SiteMaster上
<% if(Request.QueryString["msg"]!=null) Response.Write(Session["msg"].ToString()); %>
答案 2 :(得分:0)
显示消息后,您必须设置Session["msg"] = null
。会话在服务器中默认为20分钟。如果你没有将它设置为null,它将会出现
答案 3 :(得分:0)
在页面上打印后,尝试将Session [“msg”]设置为null。