2012-07-25 6 views
7

मैं रेज़र के साथ एमवीसी 3 एप्लीकेशन में काम कर रहा हूं। उपयोगकर्ता को सत्यापित करने के बाद मेरे खाता नियंत्रक में, मुझे डेटाबेस से उपयोगकर्ता क्लाइंट आईडी मिल रहा है। यहां मैं सत्र परिवर्तक में क्लाइंट आईडी को जारी रखना चाहता हूं। जो सभी नियंत्रक और रेजर दृश्य में उपयोग कर रहा था।mvc3 razor view में सत्र चर का उपयोग कर डेटा कैसे बनाए रखें?

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

आपकी मदद के लिए धन्यवाद ..

+0

यह उपयोगी हो सकता है http://www.hanselman.com/blog/TroubleshootingExpiredASPNETSessionStateAndYourOptions.aspx – ManirajSS

उत्तर

2

आप उपयोग कर रहे हैं ASP.NET फॉर्म्स प्रमाणीकरण, उपयोगकर्ता नाम पहले से ही एक कुकी में संग्रहीत किया जाता है। आप कंट्रोलर से

Controller.User.Identity.Name 

उपयोगकर्ता आईडी को उपयोगकर्ता नाम के रूप में स्टोर करना संभव है। जब आप

FormsAuthentication.RedirectFromLoginPage 

जैसे किसी नाम को आईडी दें तो उसे कुछ नाम दें। आईडी को उपर्युक्त विधि का उपयोग करके पाया जा सकता है और कोई अतिरिक्त सत्र डेटा आवश्यक नहीं है। यदि आप सत्र में कुछ स्टोर करना चाहते हैं, तो बस

Session["UserID"] = value; 

अपने नियंत्रक से कॉल करें।

+0

आपकी प्रतिक्रिया के लिए धन्यवाद .. वास्तव में हम के लिए बहु किरायेदार पहुँच कार्यान्वित कर रहे हैं हमारे ढांचे। इसलिए मैं नियंत्रक के पूरे डेटा के बारे में थोड़ा उलझन में हूं। तो क्या आप मुझे सुझाव दे सकते हैं कि कौन सा बेहतर दृष्टिकोण है? – user10489

18

मैं आमतौर पर एक सत्र आवरण है कि मुझे भविष्य में यह करने के लिए आसान उपयोग की अनुमति देता लिखें:

public class SessionData 
{ 
    const string ClientId_KEY = "ClientId"; 

    public static int ClientId 
    { 
     get { return HttpContext.Current.Session[ClientId_KEY] != null ? (int)HttpContext.Current.Session[ClientId_KEY] : 0; } 
     set { HttpContext.Current.Session[ClientId_KEY] = value; } 
    } 
} 

उसके बाद आप इस तरह कहीं से भी एक्सेस कर सकते हैं:

int clientId = SessionData.ClientId; 

आप यदि आप चाहते हैं इस तरह सत्र में पूरी वस्तुओं का उपयोग कर सकते हैं।

या आप यह इतना की तरह सेट कर सकते हैं: SessionData.ClientId = clientId;

+0

आपकी प्रतिक्रिया के लिए धन्यवाद ... मूल रूप से हम अपने ढांचे के लिए बहु किरायेदार पहुंच को लागू कर रहे हैं। तो सत्र अच्छा दृष्टिकोण है? और मैं डीबी से लॉग इन उपयोगकर्ता के आधार पर क्लाइंट आईडी प्राप्त कर रहा हूं। तो मैं सत्र परिवर्तक में CliendID कैसे बांध सकता हूँ? – user10489

+0

मैं आपकी परियोजना के सभी प्रभावों और आवश्यकताओं को नहीं जानता, लेकिन अब तक मुझे सत्र का उपयोग करने में कोई समस्या नहीं दिख रही है। मैंने यह दिखाने के लिए अपना जवाब अपडेट कर दिया है कि आप रैपर का उपयोग करके सत्र में क्लाइंट आईडी कैसे सेट कर सकते हैं। – Dmitry

+0

सत्र – Nipuna

संबंधित मुद्दे