2010-12-07 18 views
22

Creación de una aplicación MVC 3 con Razor y tengo cierta información persistida en el ámbito de la sesión que se utilizará en el archivo _Layout.Acceso a un objeto Session desde Razor _Layout.cshml

No tengo ni idea de cuál es la mejor manera de implementar esto. Parte de esta información se usa para determinar qué se representa en el encabezado.

que tienen un objeto CurrentUser almacenada en el ámbito de sesión

Respuesta

52

Se podía acceder al HttpContext en el archivo de diseño

@HttpContext.Current.Session["Whatever"].ToString() 

o, si se quiere tener acceso al objeto de usuario que sólo podría crear un objeto en la página y asignarla

@{ CurrentUser user = (CurrentUser)HttpContext.Current.Session["CurrentUser"]; } 

Entonces adelante en el código ...

@user.Name 
+0

Hey gracias .. que funciona, pero ahora me siento sucia causa que tenía que agregue una directiva @using ... ¿no hay una forma de usar un ViewModel en su _Layout? – JBeckton

+4

Si te hace sentir más limpio, puedes agregar tu espacio de nombres a la lista predeterminada de usos Razor en el archivo Views \ Web.config. – marcind

+1

También podría resumir esto en una clase base común para sus modelos de vista. Creo que puede usar esa clase base desde su página _Layout. –

3

Una manera más fácil de hacerlo es usando Session propiedad directamente desde la vista (HttpContext.Current. prefijo no debe ser necesario en absoluto):

@(CurrentUser)Session["CurrentUser"] 
Cuestiones relacionadas