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