2012-06-27 33 views
6

¿Cómo puedo acceder a la sesión desde el modelo?cómo acceder a la sesión en el modelo asp.net mvc

trato de usar:

public IQueryable<EstudentsViewModel> GetEstudentsProjected(decimal? Code) 
     { 
      . 
      . 
      . 
      decimal id; 
      id = (decimal)Session["Consul"]; 
      . 
      . 
      . 
     } 

aparecer: El nombre 'Sesión' no existe en el contexto actual

+0

¿Qué estás tratando de lograr aquí? ¿Por qué está almacenando este valor en sesión para comenzar? Creo que si proporciona respuestas a esas preguntas, se le dará una alternativa mucho mejor que evitará que tenga que hacer esto. –

Respuesta

23

¿Cómo puedo acceder a la sesión del Modelo?

Siempre se puede realizar el siguiente pornografía:

HttpContext.Current.Session["Consul"] 

Pero, por favor, oh mi santo Tierra por favor, prométeme que nunca realice tal crimen.

Un modelo nunca debe saber qué es una sesión. Una sesión es un término web y el modelo debe ser completamente agnóstico. Debe pasar la información que el Modelo requiere del Controlador que tiene acceso a la Sesión.

así que mira esto:

public IQueryable<EstudentsViewModel> GetEstudentsProjected(decimal? Code, decimal id) 
{ 
    ... 
} 

Y cuando se invoca este método desde el controlador va a pasar simplemente el valor de la sesión debido a que el controlador tiene acceso a ella.

+1

Sé que esta es una publicación muy antigua, pero ¿no podemos pasar ISessionManager como parámetro? ISessionManager es solo una interfaz contenedora alrededor del objeto HttpContext.Current.Session. –

Cuestiones relacionadas