2010-12-07 15 views
22

Jiletli bir MVC 3 uygulaması oluşturma ve _Layout dosyasında kullanılacak olan Oturum kapsamı içinde bazı bilgiler kalıcıdır.Bir Session nesnesine erişim Razor _Layout.cshml

Bunu gerçekleştirmenin en iyi yolu hakkında hiçbir fikrim yok. Bu bilgilerin bir kısmı başlıkta neyin işlendiğini belirlemek için kullanılır.

Ben size sadece bir nesne oluşturabilir kullanıcı nesnesine erişmek istiyorsanız

cevap

52

Sadece, düzen dosyası

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

yılında HttpContext erişmek veya verebilir Oturum kapsamı saklanan bir CurrentUser nesne var ve sayfada ... Daha sonra kodunuzda sonra

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

atamak

@user.Name 
+0

teşekkür Hey .. çalışır ama şimdi ben gerekiyordu kirli nedenini hissediyorum @using direktifini ekle .. _Layout'unuzda bir ViewModel kullanmanın bir yolu yok mu? – JBeckton

+4

Sizi daha temiz hissettirecek olursa, adınızı Views \ Web.config dosyasında varsayılan Razor kullanımı listesine ekleyebilirsiniz. – marcind

+1

Ayrıca, bu görünüm modelleriniz için ortak bir temel sınıfta da kullanabilirsiniz. Bu temel sınıfı _Layout sayfanızdan kullanabileceğinizi düşünüyorum. –

3

bu görünümden doğrudan Session özelliğini kullanarak yapmak daha kolay yolu (HttpContext.Current. önek tüm gerekli olmamalıdır):

@(CurrentUser)Session["CurrentUser"]