可以使用如下代码将一个列表分配给 ASP.NET CORE 6 中的会话,并在需要时调用它:
将列表分配给会话:
// 在控制器中获取会话对象
public class MyController : Controller
{
private readonly ISession _session;
public MyController(IHttpContextAccessor httpContextAccessor)
{
_session = httpContextAccessor.HttpContext.Session;
}
// 将列表分配给会话
public void SetListToSession(List list)
{
_session.SetObjectAsJson("MyList", list);
}
}
从会话中调用列表:
// 在控制器中获取会话对象
public class MyController : Controller
{
private readonly ISession _session;
public MyController(IHttpContextAccessor httpContextAccessor)
{
_session = httpContextAccessor.HttpContext.Session;
}
// 从会话中调用列表
public List GetListFromSession()
{
var list = _session.GetObjectFromJson>("MyList");
return list ?? new List();
}
}
上述代码中的“SetObjectAsJson”和“GetObjectFromJson”方法是使用 Newtonsoft.Json 库实现的扩展方法。如果需要使用官方提供的 System.Text.Json 库,可以使用以下代码:
// 在控制器中获取会话对象
public class MyController : Controller
{
private readonly ISession _session;
private readonly JsonSerializerOptions _options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
WriteIndented = true
};
public MyController(IHttpContextAccessor httpContextAccessor)
{
_session = httpContextAccessor.HttpContext.Session;
}
// 将列表分配给会话
public void SetListToSession(List list)
{
var json = JsonSerializer.Serialize(list, _options);
_session.SetString("MyList", json);
}
// 从会话中调用列表
public List GetListFromSession()
{
var json = _session.GetString("MyList");
return string.IsNullOrEmpty(json)
? new List()
: JsonSerializer.Deserialize>(json, _options);
}
}