如何在ASP.NET Web窗体中执行通知消息

时间:2013-06-04 14:12:51

标签: asp.net

我有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”。但是用户应该只看一次。

4 个答案:

答案 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。