2011-06-10 13 views
6

मुझे एक एएसपीनेट पृष्ठ मिला है जिसमें सी # कोड-बैक है जो पेज_लोड() विधि में कुछ सामान करता है (जैसे डाटाबेस पूछताछ करें और डेटा के साथ ऑब्जेक्ट्स को पॉप्युलेट करने के लिए कुछ अन्य कॉल करें) । मैं फिर पेज पर इस डेटा को प्रदर्शित करता हूं। यह सब ठीक काम करता है। मैंने कुछ पोस्टबैक स्थापित किए हैं ताकि जब किसी सूची बॉक्स में कोई मान क्लिक किया गया हो, तो पैनल नियंत्रण शेष ऑब्जेक्ट के डेटा से भरा होता है। मैंने सोचा कि पोस्टबैक ऐसा करने का सही तरीका था, लेकिन इससे (पूरी कक्षा?) को फिर से बुलाया जा सकता है, जो मेरी वस्तुओं को फिर से शुरू करता है और जो डेटा मैं रखना चाहता हूं उसे नष्ट कर देता है।पोस्टबैक के दौरान सी # ऑब्जेक्ट्स पर बने रहें

क्या आंशिक-पोस्टबैक का कुछ रूप इस समस्या को हल करेगा, या क्या मैं ऐसा करने का प्रयास करने का एक बेहतर तरीका है?

मैं हर बार एक पोस्टबैक कहा जाता है फिर से पॉप्युलेट वस्तुओं, कि एक डेटाबेस क्वेरी लेता है, और मैं फिर से क्वेरी करने पर हर बार कुछ क्लिक किया जाता है से बचना चाहते हैं के रूप में नहीं करना चाहते ...

मैं स्थायी जावास्क्रिप्ट ऑब्जेक्ट्स के संबंध में कई प्रश्न हैं, लेकिन ऐसा कुछ भी नहीं है जो वास्तव में इसका समाधान करता है। मैं .NET 4.0

+0

आपके डेटा सत्र/कैश/कुकी/आदि को जारी रखने के लिए आपके पास बहुत सारे विकल्प हैं ... एक और विकल्प आंशिक पोस्ट हो सकता है [UpdatePanel] (http://www.asp.net/ajax/tutorials/understanding -asp निवल ajax-UpdatePanel-ट्रिगर्स)। – Zachary

उत्तर

3

वर्तमान उपयोगकर्ता के लिए Session में ऑब्जेक्ट्स रखता हूं।

+0

ठीक है, अभी भी एक पूर्ण पोस्टबैक कर रहा है जिसे ऐसा करने का उचित तरीका माना जाता है? या क्या मुझे पृष्ठ के कुछ हिस्सों को बदलने के लिए किसी प्रकार के AJAX या आंशिक-पोस्टबैक का उपयोग करना चाहिए? – uscere90

+0

आप पूरी तरह से एक अलग विषय पर हैं। पोस्टबैक के बीच किसी उपयोगकर्ता के लिए चर और ऑब्जेक्ट्स को रखना 'सत्र' द्वारा सर्वोत्तम रूप से संभाला जाता है - या तो SQL सर्वर डेटाबेस का उपयोग करने में इनप्रोक। चाहे आप पूर्ण पोस्टबैक करना चाहते हैं या AJAX का उपयोग करना चाहते हैं, इस पर निर्भर है कि आपका एप्लिकेशन कैसा है। एक ग्रिड या सूची को रीफ्रेश करना, उदाहरण के लिए, शायद एजेक्स रीफ्रेश का उपयोग करके सबसे अच्छा संभाला जाता है क्योंकि आपको केवल डेटा को पकड़ने की आवश्यकता होती है, न कि पेज लेआउट तत्व आदि। उम्मीद है कि मदद करता है। – Yuck

+0

मैं सत्र में वस्तुओं को रखने की सिफारिश नहीं करता। – Chris

2

एक (!IsPostback) { } में अपने सभी आरंभीकरण सामान रखो और आंशिक Postbacks का उपयोग करें। इस तरह प्रारंभिक कोड को पोस्टबैक के दौरान फिर से नहीं बुलाया जाता है।

+0

मुझे यह पृष्ठ_लोड अनुभाग में मिला है - जिस समस्या में मैं चल रहा हूं वह चरणीय दायरा है। मेरे पास इन ऑब्जेक्ट्स के साथ काम करने के लिए कई विधियां हैं, इसलिए उन्हें कक्षा-स्कोप चर के रूप में घोषित किया जाता है। जब मैं पूर्ण पोस्टबैक करता हूं, तो उन्हें फिर से घोषित किया जाता है और पुराने लोग नष्ट हो जाते हैं। – uscere90

+2

वे चर को पकड़ने के लिए सत्र के बजाय व्यूस्टेट का उपयोग कर सकते हैं। इस तरह वे केवल उस पृष्ठ के भीतर रहते हैं। – Marcus

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