在asp.net中检查会话?

时间:2010-12-07 14:31:49

标签: asp.net

在我的Web应用程序中,我正在检查这样的会话状态..在页面加载甚至是其中一个页面但是每次会话都不为null时显示看到这是我的代码......

if (Session["my"] != null)
{
  Response.Write("hi");
}
else
{
  Response.Redirect("default.aspx");
}

这是我正在为此会话分配价值的页面 一个按钮和一个链接按钮,并写这样的代码

protected void btn_Click(object sender, EventArgs e)
{
    Session["my"] = "surya";
    Response.Redirect("default1.aspx");
}

protected void LinkButton1_Click(object sender, EventArgs e)
{
    Response.Redirect("default1.aspx");
}

但每次显示我的意思是即使我点击链接按钮它显示“hi”消息 你有没有帮我?是否有任何背后的问题

3 个答案:

答案 0 :(得分:1)

这是正常的,因为您为会话变量“my”分配了一个值,而在default.aspx中,如果会话变量“my”不为null,则写入“hi”。

只需更改行

即可
Response.Write("hi");

Response.Write(Session["my"].ToString());

你会看到会话变量“my”的值。

答案 1 :(得分:1)

如果添加其他按钮并单击处理程序,该怎么办?

protected void Button2_Click(object sender, EventArgs e)
{
   Session.Abandon();
   Response.Redirect("default1.aspx");
}

我希望会话被清除,以便不打印“Hi”。

发生了什么(我猜)是你在会话中放了一些内容而从未清除它。

注意Session.Abandon()清除整个会话。您也可以使用Session.Remove("my");清除此值。

答案 2 :(得分:0)

每次请求页面时都会执行页面加载

这就是为什么(当你的会话!= null)屏幕上正在打印“嗨”。你只是想让它发生一次吗?

如果是,请探索Page.IsPostBack

private void Page_Load()
{
    if (!IsPostBack)
    {
        // Will only happen if its not a postback
        // (first request)
    }
}