2012-06-27 23 views
6

Come posso accedere alla sessione dal modello?come accedere alla sessione nel modello asp.net mvc

cerco di usare:

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

viene visualizzata: Il nome 'sessione' non esiste nel contesto corrente

+0

Cosa stai cercando di realizzare qui? Perché stai memorizzando questo valore in sessione per cominciare? Penso che se fornisci le risposte a queste domande, ti verrà data un'alternativa molto migliore che ti impedirà di doverlo fare. –

risposta

23

Come posso accedere alla sessione dal modello?

Si può sempre eseguire la seguente pornografia:

HttpContext.Current.Session["Consul"] 

Ma per favore, oh mio santo della Terra per favore, prometto che io non eseguire mai un tale crimine.

Un modello non deve mai sapere cos'è una sessione. Una Sessione è un termine web e il Modello dovrebbe essere completamente agnostico. È necessario trasmettere le informazioni richieste dal Modello dal Controller che ha accesso alla Sessione.

Quindi controllare questo fuori:

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

E quando si richiama questo metodo dal controller sarà sufficiente passare il valore della sessione perché il controller ha accesso ad esso.

+1

So che questo è un post molto vecchio, ma non possiamo passare ISessionManager come parametro? ISessionManager è solo un'interfaccia wrapper attorno all'oggetto HttpContext.Current.Session. –

Problemi correlati