2010-12-07 12 views
22

रेजर के साथ एक एमवीसी 3 ऐप का निर्माण करना और मेरे पास सत्र स्कोप में कुछ जानकारी जारी है जिसका उपयोग _Layout फ़ाइल में किया जाएगा।रेजर _Layout.cshml

मुझे इस बात का कोई संकेत नहीं है कि इसे लागू करने का सबसे अच्छा तरीका क्या है। इस जानकारी में से कुछ का उपयोग यह निर्धारित करने के लिए किया जाता है कि हेडर में क्या प्रदान किया जाता है।

मैं सत्र दायरे में जमा एक CurrentUser वस्तु है

उत्तर

52

तुम बस लेआउट फ़ाइल

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

में HttpContext पहुंच सकता है या, हो सकता है आप अगर तुम सिर्फ एक वस्तु बना सकते हैं उपयोगकर्ता वस्तु का उपयोग करना चाहते हैं पेज में और यह

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

फिर बाद में आवंटित अपने कोड में ...

@user.Name 
+0

अरे धन्यवाद .. कि काम करता है लेकिन अब मैं गंदा क्योंकि मैं करना पड़ा लग रहा है एक @using निर्देश जोड़ें .. क्या आपके _Layout में ViewModel का उपयोग करने का कोई तरीका नहीं है? – JBeckton

+4

यदि यह आपको क्लीनर महसूस कर देगा, तो आप दृश्यों \ Web.config फ़ाइल में रेजर उपयोग की डिफ़ॉल्ट सूची में अपना नामस्थान जोड़ सकते हैं। – marcind

+1

आप इसे अपने दृश्य मॉडल के लिए एक सामान्य बेस क्लास में भी लपेट सकते हैं। मेरा मानना ​​है कि आप अपने _Layout पृष्ठ से उस बेस क्लास का उपयोग करने में सक्षम हो सकते हैं। –

3

यह Session संपत्ति सीधे उपयोग कर रहा है देखने से ऐसा करने के लिए एक आसान तरीका (HttpContext.Current. उपसर्ग में सभी आवश्यक नहीं होना चाहिए):

@(CurrentUser)Session["CurrentUser"]