C# 将列表存储到会话

C# 将列表存储到会话,c#,asp.net,list,session,C#,Asp.net,List,Session,是否可以将列表存储到Asp.net C#中的会话变量?是的,您可以存储任何对象(我假设您使用的是Asp.net的默认设置,即进程内会话状态): 应将其转换回原始类型以供使用: var list = (List<int>)Session["test"]; // list.Add(something); var list=(list)会话[“test”]; //添加(某物); 正如Richard指出的,如果您使用的是要求对象可序列化的其他会话状态模式(如SQL Server),则应格

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

是的,您可以存储任何对象(我假设您使用的是Asp.net的默认设置,即进程内会话状态):

应将其转换回原始类型以供使用:

var list = (List<int>)Session["test"];
// list.Add(something);
var list=(list)会话[“test”];
//添加(某物);

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

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

List myList=new List();
会话[“var”]=myList;
然后,检索:

myList = (List<string>)Session["var"];
myList=(列表)会话[“var”];

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

HttpContext.Current.Session.Add("currentUser", appUser);

否则,当我将对象指向会话对象时,编译器需要一个字符串。

试试这个

    List<Cat> cats = new List<Cat>
    {
        new Cat(){ Name = "Sylvester", Age=8 },
        new Cat(){ Name = "Whiskers", Age=2 },
        new Cat(){ Name = "Sasha", Age=14 }
    };
    Session["data"] = cats;
    foreach (Cat c in cats)
        System.Diagnostics.Debug.WriteLine("Cats>>" + c.Name);     //DEBUGGG
List cat=新列表
{
new Cat(){Name=“Sylvester”,Age=8},
新猫(){Name=“胡须”,年龄=2},
新猫(){Name=“Sasha”,年龄=14}
};
会话[“数据”]=猫;
foreach(猫中的c类)
System.Diagnostics.Debug.WriteLine(“Cats>>”+c.Name)//调试
YourListType ListName=(List)Session[“SessionName”];
用于检索会话

ProductList objLst = (ProductList)Session["Product"];

不完全正确。如果您需要使用与proc中的默认会话存储不同的会话存储,则该类将需要可序列化。这就是为什么最好从一开始就将您在会话中推送的任何类标记为可序列化的-然后您可以在不必编辑代码的情况下更改机制。有效点为1<如果
T
可序列化,则code>List可序列化。2.默认会话状态模式为proc。@Mehrdad-我明白你的意思,很高兴你有一个代码示例。我刚刚在你的答案中改写了“any object”。对于老学VB.net的人:
CType(Session(“test”),List(of int32))
我遇到这样的错误:无法序列化Session状态。在“StateServer”和“SQLServer”模式下,ASP.NET将序列化会话状态对象,因此不允许使用不可序列化的对象或MarshalByRef对象。如果自定义会话状态存储在“自定义”模式下完成了类似的序列化,则同样的限制也适用。请参阅标记。他清楚地提到了C#asp.netI,我得到了这样的错误:System.Web.HttpException:无法序列化会话状态。在“StateServer”和“SQLServer”模式下,ASP.NET将序列化会话状态对象,因此不允许使用不可序列化的对象或MarshalByRef对象。如果“custom”模式下的自定义会话状态存储完成了类似的序列化,则同样的限制也适用。i get
“HttpContextBase”不包含“Current”的定义,并且找不到接受“HttpContextBase”类型的第一个参数的扩展方法“Current”(您是否缺少using指令或程序集引用?
请更正这一行ProductList obj=new ProductList();虽然我们感谢您尝试回答问题,但一个十年前完全解决的问题并不真正需要另一个答案,除非有突破性的更改。
(AppUser) HttpContext.Current.Session["currentUser"]
    List<Cat> cats = new List<Cat>
    {
        new Cat(){ Name = "Sylvester", Age=8 },
        new Cat(){ Name = "Whiskers", Age=2 },
        new Cat(){ Name = "Sasha", Age=14 }
    };
    Session["data"] = cats;
    foreach (Cat c in cats)
        System.Diagnostics.Debug.WriteLine("Cats>>" + c.Name);     //DEBUGGG
YourListType ListName = (List<YourListType>)Session["SessionName"];
public class ProductList
{
   public string product{get;set;}
   public List<ProductList> objList{get;set;}
}

ProductList obj=new ProductList();
obj.objList=new List<ProductList>();
obj.objList.add(new ProductList{product="Football"});
Session["Product"]=obj;
ProductList objLst = (ProductList)Session["Product"];