2010-08-27 15 views
5

मैं जानना चाहता हूं कि हमें किसी ऑब्जेक्ट को देखने के लिए धारावाहिक विशेषता क्यों सेट करनी चाहिए।हम राज्य में किस प्रकार की वस्तुएं रख सकते हैं?

इसके अलावा, हम किस प्रकार की वस्तुओं को देखने के राज्य में स्टोर कर सकते हैं?

उत्तर

9

ViewStateObjectStateFormatter का उपयोग कर बाइनरी क्रमिकरण का उपयोग करके क्रमबद्ध किया गया है। दस्तावेज़ से उद्धरण:

ObjectStateFormatter वर्ग को क्रमानुसार और प्रारूप के लिए कई आम .नेट फ्रेमवर्क संदर्भ प्रकार, के साथ-साथ स्थिरांक अनुकूलित है। निम्नलिखित तालिका अनुकूलित प्रकारों को सूचीबद्ध करती है।

सरणी DATETIME,, int16, स्ट्रिंग, ArrayList, डबल, Int32, String [], बूलियन, Enum, अशक्त (कुछ नहीं), String.Empty, बाइट, Hashtable, जोड़ी, ट्रिपलेट, चार, HybridDictionary , एकल, प्रकार, रंग, IDictionary,

इसके अतिरिक्त, जबकि पारंपरिक स्ट्रिंग प्रकार और स्ट्रिंग सरणियों के लिए और एक धारावाहिक बाइनरी लेखक अनछुए से लिखे जाते हैं, कुछ तार आंतरिक स्ट्रिंग तालिका बनाने से अनुकूलित कर रहे हैं। स्ट्रिंग्स इन तालिकाओं का उपयोग करके ऑप्टिमाइज़ किए गए हैं यदि स्ट्रिंग में संबंधित टाइपकॉन्टर ऑब्जेक्ट है या स्ट्रिंग वास्तव में इंडेक्सड स्ट्रिंग क्लास का उदाहरण है।

अन्य प्रकार के ऊपर सूचीबद्ध नहीं हैं बाइनरी-धारावाहिक एक BinaryFormatter ऑब्जेक्ट का उपयोग करता है, तो वे ISerializable इंटरफ़ेस लागू या SerializableAttribute विशेषता के साथ सजाया जाता है। ऑब्जेक्टस्टेटफॉर्मेटर क्लास इन क्रमिक प्रकारों में से किसी के लिए अनुकूलित नहीं है।

ObjectStateFormatter वर्ग एक प्रकार है कि serializable नहीं है का सामना करना पड़ता है, तो एक ArgumentException अपवाद फेंक दिया है।

एक वस्तु द्विआधारी ViewState इसकी आवश्यकता में serializable होने के लिए [Serializable] विशेषता के साथ सजाया जा करने के लिए। तो आप ViewState किसी भी ऑब्जेक्ट में डाल सकते हैं जिसमें यह विशेषता है। ध्यान दें कि स्ट्रिंग, int, float, जैसे सरल प्रकार ... को ViewState में भी रखा जा सकता है।

1

प्रकार दृश्यस्थल में रखने के लिए क्रमिक होना चाहिए। व्यूस्टेट ऑब्जेक्ट्स का एक क्रमबद्ध संग्रह है, इसलिए किसी भी धारावाहिक वस्तुओं को वहां रखा जा सकता है।

0

बहुत कुछ भी जो क्रमिक है। हालांकि, ध्यान रखें कि डेटा सर्वर और वेब ब्राउज़र (और पीछे, पोस्टबैक के दौरान) के बीच तार पर भेजा जाएगा, ताकि यदि संभव हो, तो आप वॉल्यूम को नीचे रखना चाहेंगे।

1

क्या ऑब्जेक्ट्स - डैरेन और एंड्रयू के अनुसार - किसी भी धारावाहिक योग्य। क्यों Serializable?ताकि राज्य लेकिन व्यवहार में

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTY1NTgzODUwMg9kFgJmD2QWAgIDD2QWAgIBD2QWBgIBDw8WAh4EVGV4dAUXU3VwcGxpZXIgUG9y 

तरह धारावाहिक जा सकता है, के रूप में यह बैंडविड्थ/पृष्ठ आकार प्रदर्शन प्रभाव पड़ता है कम से कम viewstate रखने की जरूरत है। नियंत्रण दृश्यस्थल के सबसे आम उपयोगकर्ता हैं।

1

व्यूस्टेट में टाइप की वस्तुएं टाइप न करें। ऑब्जेक्टस्टेटफॉर्मेटर उन्हें पहचान नहीं पाता है और वे प्रति GUID एक विशाल 130bytes पर बाइनरीफॉर्मेटर का उपयोग करने में जाम हो जाते हैं। आप उन्हें तारों के रूप में संग्रहित करने और पढ़ने पर उन्हें पार्स करने से बेहतर हैं। यह हमेशा काम नहीं करता है, उदाहरण के लिए, ग्रिड में एक कुंजी के रूप में ग्रिड का उपयोग करते समय।

साथ ही, व्यूस्टेट में गणनाओं को लोड/सहेजते समय, आप उन्हें एक अभिन्न प्रकार से परिवर्तित करके थोड़ा सा लाभ प्राप्त करेंगे। आपके नियंत्रण की संपत्ति में आप आवश्यक गणना के प्रकार को जानते हैं, और इसे धारावाहिक व्यूस्टेट में एन्कोड करने की आवश्यकता नहीं है।

यह ऑब्जेक्टस्टेटफॉर्मेटर के कार्यान्वयन को देखने के लिए परावर्तक का उपयोग करने का भुगतान करता है यह देखने के लिए कि सब कुछ कैसे संभाला जाता है, ताकि आपको प्रक्रिया और इसकी सीमाओं की कुछ समझ हो।

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