मैं सामान्य ASP.NET नियंत्रण का एक समूह लेखन किया गया है, और एक बात मैं चारों ओर मेरे मन लपेटो नहीं कर पा रहे जब viewstate में मान संग्रहीत करने के लिए, और जब यह नहीं ठीक है ग्रहण करने के लिए है।मैं कैसे तय करूं कि व्यूस्टेट में स्टोर करना है?
एक तरफ, यह viewstate में नियंत्रण से पूरे राज्य स्टोर करने के लिए समझ में आता है, जैसे गुण शामिल हैं:
- पाठ बॉक्स उपयोगकर्ता द्वारा दर्ज किए गए मान (या किसी भी रूप डेटा)
- कॉन्फ़िगरेशन विकल्प जैसे ऊंचाई या पृष्ठ आकार
- यहां तक कि कैसे नियंत्रण बना दिया गया है - उदाहरण के सभी डेटा एक ग्रिड दृश्य से बनाया गया है, या ग्रिड में ही भंडारण के लिए।
की उपेक्षा कर प्रदर्शन, और अधिक, क्योंकि इसका अर्थ नियंत्रण बिल्कुल वैसा ही भर Postbacks व्यवहार करेंगे और कभी नहीं "गलती" एक मूल्य के वापस लौटने या "भूल" यह अक्षम किया गया था आप, viewstate में धक्का कर सकते हैं बेहतर है। लेकिन व्यूस्टेट मुफ्त नहीं है। सब कुछ संग्रहित करने का मतलब है कि नियंत्रण अब एचटीएमएल और उसके सभी आंतरिक गुणों को एचटीएमएल बनाने के लिए आउटपुट करेगा, जो लगभग हमेशा आउटपुट से दोगुना होगा।
मेरा प्रश्न प्रदर्शन के बारे में नहीं है, लेकिन रणनीति के बारे में। मैं किस संपत्ति पर व्यूस्टेट में संपत्ति लगाने का फैसला करता हूं? मैं इन पंक्तियों के साथ कुछ सोच रहा था:
उपयोगकर्ता एक संपत्ति नहीं बदल सकते हैं, तो सर्वर हमेशा यह स्पष्ट रूप से सेट हो जाएगा, तो यह यह viewstate से बाहर छोड़ने के लिए ठीक है।
color=red
जैसे कुछ के लिए, उपयोगकर्ता इस संपत्ति को सीधे सेट नहीं करता है; वे कहीं और बटन पर क्लिक करेंगे जो अप्रत्यक्ष रूप से इस संपत्ति को सेट करता है। उस बटन या उसके मालिक को राज्य को रखना चाहिए, नियंत्रण नहीं जो रंग लाल रंग प्रदान करता है।
इस तर्क का तात्पर्य है कि उन लक्षणों को viewstate में जाना चाहिए होगा:
- फार्म जैसे तत्वों
<input>
(औरRequest.Form[c.UniqueID]
साथ यह अभी भी बचा जा सकता है) - गुण है कि उपयोगकर्ता नियंत्रित कर सकते हैं सीधे नियंत्रण पर interactively।
इस तर्क मतलब है? यह कमजोर लगता है और मैं विशेषज्ञों से और अधिक सुनना चाहता हूं।
इसके अलावा: http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx एक मजेदार पढ़ा गया है – Patrick