我正在尝试创建一个强类型会话对象。假设我想在会话中存储用户的姓名和电子邮件。我的基本控制器会处理这个问题,所以我总是可以假设这些值存在于会话中。
目前,我可以像这样在我的 Razor 视图中引用它们:
Email: @Session["Email"]<br/>
Name: @Session["Name"]<br/>
我想做的是做这样的事情:
Email: @Session.Email<br/>
Name: @Session.Name<br/>
我认为这样做的方法是扩展HttpContext.Session对象。类似于:
class MySession : HttpSessionState {
public string Email { get; set; }
public string Name { get; set; }
}
我尝试创建自己的会话提供程序,如此处所述,但这不会在 HttpContext、Controller 或 View 中公开。
使用此处描述的扩展方法有一个很好的解决方法。这导致语法略有不同,这并不是我想要的:
Email: @Session.Email()<br/>
Name: @Session.Name()<br/>
有没有更好的方法来做到这一点?
谢谢!