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?)
答案 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;
答案 2 :(得分:0)
看起来像permissionList被填充,即从会话中提取数据的代码工作正常。如果不是这种情况,那么您将收到NullReference异常。
我的猜测是,真正的罪魁祸首是“var”关键字。从会话中提取PermissionList时,它将作为“对象”进行检索。尝试显式转换permissionList对象,即
List<string> permissionList = Session["Permissions"];
或
var permissionList = (List<string>)Session["Permissions"];