Asp.net mvc 3 从Razor\u Layout.cshml访问会话对象

Asp.net mvc 3 从Razor\u Layout.cshml访问会话对象,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,使用Razor构建MVC 3应用程序,我在会话范围中保留了一些信息,这些信息将在_布局文件中使用 我不知道实现这一目标的最佳方式是什么。其中一些信息用于确定标头中呈现的内容 我在会话范围中存储了一个CurrentUser对象,您可以访问布局文件中的HttpContext @HttpContext.Current.Session["Whatever"].ToString() 或者,如果您想要访问用户对象,您可以在页面中创建一个对象并分配它 @{ CurrentUser user = (Curre

使用Razor构建MVC 3应用程序,我在会话范围中保留了一些信息,这些信息将在_布局文件中使用

我不知道实现这一目标的最佳方式是什么。其中一些信息用于确定标头中呈现的内容


我在会话范围中存储了一个CurrentUser对象,您可以访问布局文件中的HttpContext

@HttpContext.Current.Session["Whatever"].ToString()
或者,如果您想要访问用户对象,您可以在页面中创建一个对象并分配它

@{ CurrentUser user = (CurrentUser)HttpContext.Current.Session["CurrentUser"]; }
然后在以后的代码中

@user.Name

更简单的方法是直接从视图中使用
Session
属性(
HttpContext.Current.
前缀应该根本不需要):


嘿,谢谢。。这是可行的,但现在我感觉脏了,因为我必须添加一个@using指令。。在您的_布局中没有使用ViewModel的方法吗?如果它能让您感觉更干净,您可以将您的命名空间添加到Views\Web.config文件中Razor使用的默认列表中。您还可以将其封装在视图模型的公共基类中。我相信您可以从布局页面使用该基类。对不起,lil脱离主题,但是,是否有:Session.isNew?有一个
Session\u start()
为用户创建会话时
@(CurrentUser)Session["CurrentUser"]