如何检索会话值并在asp.net的其他页面中进行检查

时间:2011-11-03 02:20:21

标签: c# asp.net session

 reader = server.ExecuteReader(CommandType.Text, getPermissionlistQuery, param);
        var results = new List<string>();
        while (reader.Read())
        {
            results.Add(reader["permissionName"].ToString());
        }
        reader.Close();
        Session.Add("Permissions", results);

我正在向会话添加结果,如何在其他页面中检索它。

结果是值列表

var permissionList = Session["Permissions"];         
        string check = "Create Groups";
        if (permissionList.Any(item => item.Equals(check)))
        {
            // results contains the value in check 
        }

我想检查权限列表中是否有权限但if语句是否抛出错误

'object' does not contain a definition for 'Any' and no extension method 'Any' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)

3 个答案:

答案 0 :(得分:1)

只需致电String value = (String)Session["Key"];即可获取值

Session["Key"]将拉取该密钥的会话值。如果密钥不存在,则返回Null。

您也可以阅读ASP.NET Session

更新

为了响应您的修改,请确保您的项目有references to Linq。任何都是Linq扩展。

答案 1 :(得分:1)

更新:将底部代码更改为:

IList<String> collection = (IList<String>) Session["Permissions"];

string check = "Create Groups";

if (collection.Any(item => item.Equals(check)))
{
   // results contains the value in check 
}

另外,参考:

using System.Collections.Generic;
using System.Linq;

enter image description here

答案 2 :(得分:0)

看起来像permissionList被填充,即从会话中提取数据的代码工作正常。如果不是这种情况,那么您将收到NullReference异常。

我的猜测是,真正的罪魁祸首是“var”关键字。从会话中提取PermissionList时,它将作为“对象”进行检索。尝试显式转换permissionList对象,即

List<string> permissionList = Session["Permissions"]; 

var permissionList = (List<string>)Session["Permissions"];