是的,ASP.NET Core 中可以将 C# 类的实例绑定到会话中。以下是一些示例代码:
public class HomeController : Controller
{
private readonly IHttpContextAccessor _httpContextAccessor;
public HomeController(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public IActionResult Index()
{
string someKey = "example_key";
MyObject obj = new MyObject();
// 将对象存储在会话中
_httpContextAccessor.HttpContext.Session.SetObjectAsJson(someKey, obj);
// 从会话中检索对象
MyObject retrievedObj = _httpContextAccessor.HttpContext.Session.GetObjectFromJson(someKey);
return View();
}
}
using System.Text.Json;
using Microsoft.AspNetCore.Http;
public static class SessionExtensions
{
public static void SetObjectAsJson(this ISession session, string key, object value)
{
session.SetString(key, JsonSerializer.Serialize(value));
}
public static T GetObjectFromJson(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default : JsonSerializer.Deserialize(value);
}
}
在上面的示例代码中,我们首先在控制器的构造函数中注入 IHttpContextAccessor,这是一个接口,其实现提供了对 HttpContext 的访问。我们在 Index 方法中创建了一个名称为“example_key”的字符串和一个 MyObject 类的实例对象 obj。随后,我们使用 _httpContextAccessor.HttpContext.Session
将对象存储在会话中。然后,我们使用 _httpContextAccessor.HttpContext.Session.GetObjectFromJson 方法,从会话中检索对象。最后,我们返回视图。
此方法允许我们将 Session 对象与 C