是否可以在班级中创建会话?
我在我的身份验证类中尝试此操作:
HttpContext.Current.Session["user"]["name"] = "firstname";
但是我收到了这个错误:
错误342无法将带有[]的索引应用于类型的表达式 '对象'
有谁知道为什么?
答案 0 :(得分:3)
会话密钥/值未存储在jagged arrays中。它们像单维数组一样被访问:
HttpContext.Current.Session["username"] = "firstname";
请记住,会话是按服务器端的每个用户存储的,因此最终可能会很昂贵。明智地使用它们。
还要考虑,在Page
类中提取会话值,然后将其传递给class
。有一些相关的讨论here
答案 1 :(得分:1)
可以将类添加到会话中。例如,您可以创建一个类:
public class User
{
public string FirstName { get; set ;}
public string LastName{ get; set; }
}
然后将其存储在会话中:
User user = new User() { FirstName = "Jon", LastName = "Doe" };
HttpContext.Current.Session["user"] = user;
然后从会话中获取用户:
User user = HttpContext.Current.Session["user"] as User;
string firstName = user.FirstName; // "Jon"
string lastName = user.LastName; // "Doe