2012-06-27 9 views
6

Wie kann ich auf die Sitzung vom Modell zugreifen?wie auf die Sitzung im Modell asp.net zugreifen mvc

Ich versuche zu verwenden:

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

angezeigt: Der Name 'Session' existiert nicht im aktuellen Kontext

+0

Was möchten Sie hier erreichen? Warum speichern Sie diesen Wert zu Beginn in der Sitzung? Ich denke, wenn Sie Antworten auf diese Fragen geben, werden Sie eine viel bessere Alternative erhalten, die Sie davon abhalten wird, dies zu tun. –

Antwort

23

Wie kann ich an der Sitzung vom Modell zugreifen?

Sie könnten immer führen Sie die folgende Pornografie:

HttpContext.Current.Session["Consul"] 

Aber bitte, oh mein heiliger Erde bitte, versprich mir nie ein Verbrechen so auszuführen.

Ein Modell sollte nie wissen, was eine Sitzung ist. Eine Sitzung ist ein Web-Begriff und das Modell sollte völlig agnostisch davon sein. Sie sollten die Informationen, die das Modell benötigt, an den Controller weitergeben, der Zugriff auf die Sitzung hat.

dies also check out:

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

Und wenn diese Methode von der Steuerung aufrufen werden Sie einfach den Wert aus der Session übergeben, da der Controller Zugriff darauf hat.

+1

Ich weiß, das ist sehr alte Post, aber können wir nicht ISessionManager als Parameter übergeben? ISessionManager ist nur eine Wrapper-Oberfläche um das HttpContext.Current.Session-Objekt. –