मेरी ASP.NET अनुप्रयोग में, मैं एक .ascx गतिशील LoadControl का उपयोग कर लोड हो रहा हूँ, तो निम्न पद्धति का उपयोग कर:Viewstate Postbacks के बीच खो दिया
var ctrl = LoadControl("/path/to/control.ascx");
((ControlType)ctrl).SomeProperty = someData;
placeholder.Controls.Add(ctrl);
नियंत्रण मैं जोड़ने कि सीधे SomeProperty संपत्ति के मूल्य की बचत होती है व्यूस्टेट, निम्नानुसार है:
public int? SomeProperty
{
get { return (int?)ViewState["SomeProperty"]; }
set { ViewState["SomeProperty"] = value; }
}
उसके बाद, एसीएक्स नियंत्रण अपने जीवन पर रहता है और पोस्टबैक होने तक सभी ठीक है। जब पृष्ठ वापस पोस्ट होता है, अचानक दृश्य स्थिति खाली होती है! मुझे संदेह है कि ऐसा होता है क्योंकि मैं अपने पृष्ठ पर तत्काल एसीएक्स जोड़ने से पहले व्यूस्टेट में हेरफेर करता हूं। इसके अलावा, मैं अपने ascx नियंत्रण से Page_Load()
विधि में निम्न पंक्ति जोड़कर खो रहा से ViewState रोका जा सकता है:
SomeProperty = SomeProperty;
मैं यह सुनिश्चित करें कि ViewState संरक्षित है प्रत्येक और हर संपत्ति के लिए ऊपर क्या करना है। अब, ऐसा करने का एक सुंदर तरीका है? तत्काल के बाद व्यूस्टेट को मैनिपुलेट करना। पृष्ठ पर जोड़ा गया है। एक्सएक्स एक विकल्प नहीं है - मुझे Page_Init()
और Page_Load()
विधियों में व्यूस्टेट की सामग्री की आवश्यकता है, जो तुरंत मेरे पृष्ठ पर .ascx जोड़ते हैं।
धन्यवाद।
मुझे एक बार एक ही समस्या का सामना करना पड़ा, और मेरे मामले में समस्या यह थी कि हमारे सर्वकालिक बेसपेज में, हम सभी नियंत्रणों को व्यूस्टेट का उपयोग न करने के लिए सेट करते हैं। मेरा मुद्दा यह है कि नियंत्रण जोड़ना गतिशील रूप से समस्या नहीं हो सकता है, लेकिन छुपे हुए स्थान जहां व्यूस्टेट अक्षम करने के लिए सेट है। –