2012-06-27 17 views
6

Modelden oturuma nasıl erişebilirim?modeldeki oturuma nasıl erişilir asp.net mvc

Ben kullanmayı deneyin:

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

görünme: 'Session' adı

+0

Burada ne yapmaya çalışıyorsunuz? Başlamak için bu değeri neden oturumda saklıyorsunuz? Bu sorulara cevaplar sağlarsanız, bunu yapmak zorunda kalmayacak daha iyi bir alternatif verilecektir. –

cevap

23

nasıl Modelinden oturuma erişebilir geçerli bağlamda yok?

Hep aşağıdaki pornografi gerçekleştirebilir:

HttpContext.Current.Session["Consul"] 

Ama ah, lütfen benim Toprak, bana böyle bir suç gerçekleştirmek asla söz ver kutsal.

Bir Model, bir Oturumun ne olduğunu asla bilmemelidir. Bir Oturum bir web terimidir ve Model tamamen onun agnostik olmalıdır. Modelin, Session'a erişimi olan Denetleyiciden talep ettiği bilgileri iletmelisiniz.

Yani bu check out:

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

Ve denetleyicisinden bu yöntemi çağrılırken Kontrolör bu erişimi olduğundan sadece Oturum değeri geçecek.

+1

Bunun çok eski bir yazı olduğunu biliyorum, ancak ISessionManager'ı parametre olarak geçemiyoruz? ISessionManager, HttpContext.Current.Session nesnesi etrafında sadece bir sarmalayıcı arabirimidir. –