我在会话中存储了一个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;
答案 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]