ASP.NET Core 2.2 で、セッション変数にClassやListなどのオブジェクトを保持したい場合、Session拡張メソッドを使うとシンプルなソースコードになる。
セッション変数のKey/Valueが増え過ぎて、メンテナンス不能になるのを防ぐ為には必須。
Session拡張メソッドを、ジェネリック指定でjson形式にシリアライズし保持する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public static class SessionExtensions { public static void Set<T>(this ISession session, string key, T value) { session.SetString(key, JsonConvert.SerializeObject(value)); } public static T Get<T>(this ISession session, string key) { var value = session.GetString(key); return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value); } } |
セッションに保存。
1 2 3 |
HttpContext.Session.Set(“TestClass1”, new TestClass()); |
セッションから取得。
1 2 3 |
var testClass1 = HttpContext.Session.Get<TestClass>(“TestClass1”); |
セッションデータ用のテストクラス。
1 2 3 4 5 6 7 |
public class TestClass { public int Id { get; set; } public string Word { get; set; } } |
参考
ASP.NET Core でのセッションとアプリの状態 #セッション状態
コメント