web-dev-qa-db-fra.com

Enregistrer la liste dans la session

est-il possible de stocker la liste dans une variable de session en Asp.net C #?

55
Avinash

Oui, vous pouvez stocker n'importe quel objet (je suppose que vous utilisez ASP.NET avec les paramètres par défaut, qui est l'état de session en cours):

Session["test"] = myList;

Vous devez le restituer au type d'origine pour l'utiliser:

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

Comme le souligne Richard, vous devez faire très attention si vous utilisez d'autres modes d'état de session (par exemple SQL Server) qui nécessitent que les objets soient sérialisables.

64
Mehrdad Afshari

Oui. Pour quelle plateforme écrivez-vous? ASP.NET C #?

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

Ensuite, pour récupérer:

myList = (List<string>)Session["var"];
20
Paul McLean

J'ai trouvé dans un fichier de classe en dehors de la portée de la page, la méthode ci-dessus (que j'ai toujours utilisée) ne fonctionnait pas.
J'ai trouvé une solution de contournement dans ce "contexte" comme suit:

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

et

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

Sinon, le compilateur attendait une chaîne lorsque j'ai pointé l'objet vers l'objet session.

5
Don-e Merson
YourListType ListName = (List<YourListType>)Session["SessionName"];
1
Marwah Abdelaal

Essaye ça..

    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
1
Alejandro Garcia