web-dev-qa-db-ja.com

セッションへのストアリスト

リストをAsp.net C#のセッション変数に保存することは可能ですか?

55
Avinash

はい、任意のオブジェクトを保存できます(インプロセスセッション状態であるデフォルト設定でASP.NETを使用していると仮定します)。

Session["test"] = myList;

使用するために元の型にキャストする必要があります。

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

リチャードが指摘しているように、オブジェクトのシリアル化が必要な他のセッション状態モード(SQL Serverなど)を使用している場合は、特に注意する必要があります。

64
Mehrdad Afshari

はい。どのプラットフォーム用に書いていますか? ASP.NET C#?

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

次に、取得するには:

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

ページのスコープ外のクラスファイルで、上記の方法(これまで使用してきた方法)が機能しませんでした。
次のように、この「コンテキスト」で回避策を見つけました。

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

そして

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

そうしないと、セッションオブジェクトでオブジェクトをポイントしたときにコンパイラが文字列を期待していました。

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

これを試して..

    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