从会话列表中检索特定数据

时间:2015-06-13 14:42:27

标签: c# asp.net asp.net-mvc-4

我在会话中存储了一个List。 我可以通过访问userInfo[1]从列表中获取用户名。 存储在Session中后,我无法使用Session["userInfo"][1]

它给了我一个错误

  

“无法将[]索引应用于object类型的表达式。

对我有任何想法/暗示吗?

List<string> userInfo = new List<string>();
userInfo.Add(UserID);
userInfo.Add(Username);
userInfo.Add(Role);
Session[userInfo"] = userInfo;

2 个答案:

答案 0 :(得分:1)

首先需要将其强制转换为List,因为默认情况下Session将作为类型对象返回,如下所示:

var theUserInfo = Session["userInfo"] as List<string>;

// checking if it is indeed List of string
if(theUserInfo != null)
{
   // do something here with the list..
}

或者您可以隐含地这样投射:

userInfo = (List<string>) Session["userInfo"]

作为附加说明,如果您明确地投射对象,则有可能获得Invalid Cast Exception。因此,我建议您使用使用as语法的“经典”方法,因为它将返回null而不是抛出异常。

答案 1 :(得分:-1)

您必须先将其强制转换为List<string>

((List<string>)Session["userInfo")[1]
相关问题