2008-08-04 15 views
21

मुझे व्यूस्टेट के बेस 64-एन्कोडेड प्रतिनिधित्व को पकड़ने की आवश्यकता है। स्पष्ट रूप से यह अनुरोध जीवनकाल में काफी देर तक उपलब्ध नहीं होगा, जो ठीक है।निर्मित, एन्कोडेड व्यूस्टेट का मूल्य कैसे प्राप्त करें?

उदाहरण के लिए, अगर पेज के उत्पादन में शामिल हैं:

<input type="hidden" name="__VIEWSTATE" 
    id="__VIEWSTATE" value="/wEPDwUJODU0Njc5MD...==" /> 

मैं मूल्य "/wEPDwUJODU0Njc5MD...=="

स्पष्ट करने के लिए प्राप्त करने के लिए सर्वर साइड पर कोई तरीका होना चाहिए, मैं इस मूल्य की जरूरत है, जब पेज पोस्टबैक पर नहीं, प्रस्तुत किया जा रहा है। जैसे मुझे व्यूस्टेट मान को जानने की आवश्यकता है जो क्लाइंट को भेजा गया है, न कि ViewState मैं उनसे वापस आ रहा हूं।

उत्तर

9

रेक्स, मुझे लगता है एक अच्छी जगह की तलाश शुरू करने के लिए समाधान है कि ViewState सेक है - वे सर्वर पर ViewState हथियाने रहे हैं इससे पहले कि यह ग्राहक के लिए नीचे भेजा है और यह gzipping। यह वही है जहां आप बनना चाहते हैं।

3

इस blog post जहाँ लेखक ViewState पैदा करने के लिए डिफ़ॉल्ट व्यवहार को ओवरराइड करने के लिए एक विधि का वर्णन करता है और बदले में कैसे पर इसे सहेजने के लिए पता चलता देखें सर्वर सत्र वस्तु।

ASP.NET 2.0 में, ViewState PageStatePersister वर्ग के वंश से सहेजा गया है। यह क्लास व्यूस्टेट और को सहेजने और लोड करने के लिए एक सार श्रेणी है। इस कक्षा के दो कार्यान्वित वंशज हैं। नेट फ्रेमवर्क, नाम छिपी हुई फ़ील्डपेस्टस्टेटर्स और सत्रपेजस्टेट प्रिंटर। डिफ़ॉल्ट रूप से HiddenFieldPageStatePersister प्रयोग किया जाता है को बचाने के लिए/लोड ViewState जानकारी, लेकिन हम आसानी से SessionPageStatePersister काम करने के लिए और ViewState बचाने सत्र वस्तु में मिल सकता है।

हालांकि मैंने अपने कोड का परीक्षण नहीं किया है, ऐसा लगता है कि आप वास्तव में क्या चाहते हैं: पोस्टबैक से पहले सर्वर पर रहते हुए व्यूस्टेट कोड तक पहुंच प्राप्त करने का एक तरीका।

2

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

protected override void SavePageStateToPersistenceMedium(object viewState) 

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