2010-11-22 17 views
9

में सही किया गया है मैं एएसपी.नेट एमवीसी में अनधिकृत उपयोगकर्ताओं के लिए एक साधारण सत्र कार्ट लागू कर रहा हूं और मैं इसे सही करना चाहता हूं।शॉपिंग कार्ट सत्र राज्य एएसपी.नेट एमवीसी

अतीत में मैंने हमेशा Session["CartID"] स्टोर और कुकी के रूप में कार्ट आईडी संग्रहीत की है। जब भी मुझे कार्ट प्रदर्शित करने की ज़रूरत है, तो मैं अपने Carts और CartItems तालिकाओं से उपयोगकर्ता की कार्ट आइटम देखूंगा। लेकिन अंदर मैं जानता हूं कि एक अधिक दृढ़ता से टाइप किया गया दृष्टिकोण क्लीनर होगा।

नवीनतम सत्र एमवीसी सामान के लिए गुगलिंग के बाद, मुझे HttpSessionStateWrapper शब्द मिला, जो सत्रों से निपटने का एक परीक्षण योग्य तरीका प्रतीत होता है। लेकिन मुझे कोई अच्छा ट्यूटोरियल या मानकीकृत कार्यान्वयन नहीं मिला है। शायद यह सिर्फ एक गूंज शब्द है और मुझे Session["..."] पर चिपकना चाहिए।

एएसपी.नेट एमवीसी के नवीनतम संस्करण में सत्रों का उपयोग करके शॉपिंग कार्ट को लागू करने का सही तरीका क्या है?

उत्तर

4

स्टीव सैंडरसन ने अपनी पुस्तक प्रो ASP.NET MVC 2 फ्रेमवर्क में, एक का एक अच्छा उदाहरण है कि कैसे ASP.NET MVC में सत्र का उपयोग खरीदारी की टोकरी लागू करने के लिए देता है । यदि आपके पास पुस्तक नहीं है, तो आप here पढ़ने का विचार प्राप्त कर सकते हैं। यह एक बहुत साफ दृष्टिकोण है। विचार एक मॉडल बाइंडर बनाना है जो सत्र से शॉपिंग कार्ट लेता है। शॉपिंग कार्ट का उपयोग करने वाले कार्यों को मॉडल बाइंडर द्वारा "इंजेक्शन" गाड़ी मिल जाएगी। जब आप उन तरीकों का परीक्षण कर रहे हों, तो खरीदारी के लिए खरीदारी कार्ट को पारित करने के लिए आपके परीक्षण जिम्मेदार होना चाहिए।

+0

धन्यवाद, यह वही है जो मैं ढूंढ रहा था। –

+0

@uvita मुझे यह विचार पसंद है लेकिन सत्र में पूरे कार्ट को खराब विचार नहीं दे रहा है? मैंने जानबूझकर अतीत में ऐसा करने से बचा है क्योंकि हमें सत्र को छोटा रखने के लिए कहा जाता है, लेकिन अगर यह अंगूठे मिल रहा है तो मैं इसके लिए जा रहा हूं। महान भी पढ़ें, धन्यवाद। –

0

एमवीसी HttpContextBase नामक HttpContext क्लास के एक टेस्टेबल और नकली अमूर्तता का उपयोग करता है। आपको रैपर की बिल्कुल आवश्यकता नहीं है और अभी भी आपके नियंत्रकों को नकली और अनजान कर सकते हैं।

पहले उदाहरण मैं गूगल पर पाया: http://weblogs.asp.net/andrewrea/archive/2009/08/10/mocking-the-session-object-with-moq-inside-asp-net-mvc-and-having-a-clean-builder-method-for-session-values-in-the-controller.aspx

+0

यह "गंदे" कोड जैसे "गंदे" कोड जैसे "int पृष्ठ आकार = सत्र [" स्पेस कंट्रोलर! इंडेक्स! पेजसाइज "] == शून्य के साथ सत्र स्थिति के लिए सिर्फ एक मजाकिया कार्यान्वयन है? 10: कनवर्ट करें। ToInt32 (सत्र ["स्पेस कंट्रोलर! इंडेक्स! पेज साइज"]); 'क्या कोई क्लीनर, दृढ़ता से टाइप किया गया तरीका है जिसकी कोशिश की और परीक्षण किया गया है? –

+0

आप कैसे नकली हैं आप पर निर्भर है। आप अपने सत्र का उपयोग कैसे दृढ़ता से टाइप करते हैं आप पर निर्भर करता है। सत्र स्ट्रिंग कुंजी और स्टोर्स ऑब्जेक्ट्स पर निर्भर है। आपको किसी बिंदु पर उन लोगों के साथ काम करना होगा। मैं Asp.net एमवीसी में प्रमुख अंतर को इंगित करना चाहता था। – jfar

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