В моем приложении ASP.NET Core
, в файле cs
с контроллерами MVC
, я add:
using System.Text.Json;
using Microsoft.AspNetCore.Http;
В этом файле в пространство имен с контроллерами MVC
я добавляю следующий тип, который будет выполнять необходимые действия для установки и получения моего объекта из сеанса:
public static class SessionExtensions
{
public static void SetObjectAsJson<T>(this ISession session, string key, T value)
{
session.SetString(key, JsonSerializer.Serialize<T>(value));
}
public static object GetObjectFromJson<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default(T) : JsonSerializer.Deserialize<T>(value);
}
}
Кроме того, я добавляю пользовательский тип, который буду сохранять в сеансе:
public class MyClass {
public int MyInt { get; set; }
public string MyString { get; set; }
}
Теперь в первом контроллере я помещаю в сеанс экземпляр пользовательского типа:
var myComplexObject = new MyClass();
myComplexObject.MyInt = 1;
myComplexObject.MyString = "Hello World!";
HttpContext.Session.SetObjectAsJson<MyClass>("Test", myComplexObject);
Во втором контроллере я получаю этот экземпляр из сеанса:
var myComplexObject = HttpContext.Session.GetObjectFromJson<MyClass>("Test");