リストをAsp.net C#のセッション変数に保存することは可能ですか?
はい、任意のオブジェクトを保存できます(インプロセスセッション状態であるデフォルト設定でASP.NETを使用していると仮定します)。
Session["test"] = myList;
使用するために元の型にキャストする必要があります。
var list = (List<int>)Session["test"];
// list.Add(something);
リチャードが指摘しているように、オブジェクトのシリアル化が必要な他のセッション状態モード(SQL Serverなど)を使用している場合は、特に注意する必要があります。
はい。どのプラットフォーム用に書いていますか? ASP.NET C#?
List<string> myList = new List<string>();
Session["var"] = myList;
次に、取得するには:
myList = (List<string>)Session["var"];
ページのスコープ外のクラスファイルで、上記の方法(これまで使用してきた方法)が機能しませんでした。
次のように、この「コンテキスト」で回避策を見つけました。
HttpContext.Current.Session.Add("currentUser", appUser);
そして
(AppUser) HttpContext.Current.Session["currentUser"]
そうしないと、セッションオブジェクトでオブジェクトをポイントしたときにコンパイラが文字列を期待していました。
YourListType ListName = (List<YourListType>)Session["SessionName"];
これを試して..
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