将列表存储到会话

Avi*_*ash 55 c# asp.net session list

是否可以将列表存储到Asp.net C#中的会话变量?

Meh*_*ari 66

是的,您可以存储任何对象(我假设您使用的是具有默认设置的ASP.NET,这是进程内会话状态):

Session["test"] = myList;
Run Code Online (Sandbox Code Playgroud)

您应该将其强制转换为原始类型以供使用:

var list = (List<int>)Session["test"];
// list.Add(something);
Run Code Online (Sandbox Code Playgroud)

正如Richard指出的那样,如果您正在使用其他需要对象可序列化的会话状态模式(例如SQL Server),则应格外小心.

  • 不完全正确.如果您需要使用与proc中的默认值不同的会话存储,则该类将需要可序列化.这就是为什么最好将您在会话中推送的任何类从头开始标记为Serializable,然后您可以更改机制而无需编辑代码. (5认同)

Pau*_*ean 20

是.你在为哪个平台写作?ASP.NET C#?

List<string> myList = new List<string>();
Session["var"] = myList;
Run Code Online (Sandbox Code Playgroud)

然后,检索:

myList = (List<string>)Session["var"];
Run Code Online (Sandbox Code Playgroud)


小智 5

我发现在页面范围之外的类文件中,上面的方式(我一直使用的)不起作用.
我在这个"上下文"中找到了一个解决方法,如下所示:

HttpContext.Current.Session.Add("currentUser", appUser);
Run Code Online (Sandbox Code Playgroud)

(AppUser) HttpContext.Current.Session["currentUser"]
Run Code Online (Sandbox Code Playgroud)

否则,当我将对象指向会话对象时,编译器期望一个字符串.