अधिक मैं ASP.NET का उपयोग करें, अधिक if (!IsPostBack) {}
व्यर्थ लगता है ...कार्यान्वयन
पहले उदाहरण:
उदाहरण के लिए, मैं सिर्फ एक मुद्दा Google पर, उन्होंने कहा कि इस उपयोग समाधान का हिस्सा:
if (!Page.IsPostBack)
{
Page.LoadComplete += new EventHandler(Page_LoadComplete);
}
जो कोड के रूप में ठीक है, लोडकंपलेट केवल पहले लोड पर ही आग लग जाएगा। एक बटन पर क्लिक करने के बाद, या किसी भी पोस्टबैक को ट्रिगर करने वाले किसी भी चीज़ के बाद, लोडकंपलेट ईवेंट को अनचाहे छोड़ दिया जाता है, इस प्रकार ईवेंट हैंडलर को छोड़ दिया जाता है। इसलिए, उनका "फिक्स" केवल पहले लोड = बेकार पर काम करता है। मैंने तुरंत if (!Page.IsPostBack) {}
पर टिप्पणी की और अब घटना हमेशा वांछित के रूप में ट्रिगर्स।
दूसरा उदाहरण:
मैं एक डायनामिक रूप से तैयार करने के लिए बटन घटनाओं हुक करने का प्रयास कर रहा हूँ (जो वैसे, मैं काम करने के लिए नहीं मिल सकता है [GRR!])। मैं उदाहरण इस दिखा देखें:
myEditToggleButton = new Button();
myEditToggleButton.ID = "editToggleButton";
//^GOTTA HAVE THIS FOR EVENTS TO WORK! (supposedly, I haven't seen it work...)
if (!IsPostBack)
{
myEditToggleButton.Click += new EventHandler(myEditToggleButton_Click);
}
Controls.Add(myEditToggleButton);
पहला उदाहरण की तरह
, मेरी समझ है कि घटना के बाद पहले पृष्ठ लोड झुका नहीं किया जाएगा इस प्रकार बटन एक क्लिक के बाद "निष्क्रिय" है (क्योंकि पर क्लिक एक शुरू हो रहा है पोस्टबैक)।
प्रश्न:
जब आप if (!IsPostBack) {}
इस्तेमाल करना चाहिए? मुझे लगता है कि इसे मार्क-अप बनाए गए नियंत्रणों के साथ ही करना है।
सचमुच, लोड इवेंट में कोई भी कोड एक में लपेटा नहीं गया है! पेज। आईएसपोस्टबैक कोड समीक्षाओं के दौरान मेरे लिए एक लाल झंडा है। यह अक्सर वेबफॉर्म कैसे काम करता है, इस बारे में गलतफहमी दर्शाता है, खासकर डेटा बाइंडिंग के संबंध में। –