在ASP.NET中设置或不设置会话

时间:2014-02-14 10:07:12

标签: c# php asp.net session

如何检查ASP.NET C#中是否设置了任何 Session ,就像我们在PHP中一样

 if(session_id() == '')
 {
      // session has NOT been started
      session_start();
 }
 else
 {
      // session has been started
 }

在ASP.Net C#

if (Session["userRole"].ToString() == "2")
       GridView3.Columns[7].Visible= true;   
else{
       GridView3.Columns[7].Visible= false;

以上代码仅检查名为 userRole 的会话。 上述PHP代码替代C#的方法是什么?

3 个答案:

答案 0 :(得分:2)

为了检查是否设置了任何会话密钥,请尝试:

if(Session.Keys.Count > 0)
{
    Console.WriteLine("Session is filled");
}
else
{
    Console.WriteLine("Session is empty");
}

每个项目都是一个'密钥'在Session对象中。因此,当计数等于零时,没有设置会话密钥。这是你想要的吗?

答案 1 :(得分:1)

要检查session集合中是否存在Session密钥,您必须将其与null进行比较

if (Session["userRole"] != null && Session["userRole"].ToString() == "2")
根据评论

编辑,Session是Page class的属性,并且将始终存在且不会为null。

  

此属性提供有关当前请求的信息   会话。为请求a的每个用户维护一个Session对象   ASP.NET应用程序中的页面或文档。存储在变量中的变量   当用户从一个页面移动到另一个页面时,不会丢弃会话对象   在申请中;相反,这些变量只要持续存在就可以了   用户正在访问您应用中的网页MSDN

答案 2 :(得分:0)

另一种解决方案使用try catch

    try
    {
        if (Session["userRole"].ToString() == "2")
            GridView3.Columns[7].Visible = true;
        else
            GridView3.Columns[7].Visible = false;
    }
    catch (Exception)
    {
        GridView3.Columns[7].Visible = false;
    }