Сохранить список к сеансу - PullRequest
54 голосов
/ 11 августа 2009

возможно ли сохранить список в переменной сессии в Asp.net C #?

Ответы [ 5 ]

61 голосов
/ 11 августа 2009

Да, вы можете сохранить любой объект (я предполагаю, что вы используете ASP.NET с настройками по умолчанию, то есть состоянием сеанса в процессе):

Session["test"] = myList;

Вы должны привести его к исходному типу для использования:

var list = (List<int>)Session["test"];
// list.Add(something);

Как указывает Ричард, вам следует проявлять особую осторожность, если вы используете другие режимы состояния сеанса (например, SQL Server), которые требуют, чтобы объекты были сериализуемыми.

19 голосов
/ 11 августа 2009

Да. Для какой платформы вы пишете? ASP.NET C #?

List<string> myList = new List<string>();
Session["var"] = myList;

Затем, чтобы получить:

myList = (List<string>)Session["var"];
5 голосов
/ 02 сентября 2011

Я обнаружил в файле класса вне области действия страницы, описанный выше способ (который я всегда использовал) не работал.
Я нашел обходной путь в этом «контексте» следующим образом:

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

и

(AppUser) HttpContext.Current.Session["currentUser"]

В противном случае компилятор ожидал строку, когда я указывал объект на объект сеанса.

1 голос
/ 02 августа 2016
YourListType ListName = (List<YourListType>)Session["SessionName"];
1 голос
/ 06 июля 2015

Попробуйте это ..

    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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...