【问题标题】:Strongly-typed Session in ASP.Net MVC 4ASP.Net MVC 4 中的强类型会话
【发布时间】:2013-07-30 12:48:15
【问题描述】:

我正在尝试创建一个强类型会话对象。假设我想在会话中存储用户的姓名和电子邮件。我的基本控制器会处理这个问题,所以我总是可以假设这些值存在于会话中。

目前,我可以像这样在 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; }

}

我尝试创建自己的会话提供程序,如 here 所述,但这不会暴露在 HttpContext、控制器或视图中。

使用here 所述的扩展方法有一个很好的解决方法。这导致语法略有不同,这不是我想要的:

Email: @Session.Email()<br/>
Name: @Session.Name()<br/>

有更好的方法吗?

谢谢!

【问题讨论】:

  • 您可以为此使用 TempData

标签: session asp.net-mvc-4 razor-2


【解决方案1】:

您可以使用 TempData。我建议你看看this,thisthis

【讨论】:

  • 感谢您的建议。我不确定这是我想要的。我想在会话中保留一些东西,以便可以从应用程序中的任何地方访问它并在整个会话生命周期中持续存在。 TempData 似乎没有这样做。
猜你喜欢
  • 2011-01-03
  • 2015-01-14
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
相关资源
最近更新 更多