माइक्रोसॉफ्ट ASP.NET के अंतर्गत aspx वेब पेज के तीन हिस्से आमतौर पर होते हैं।
- Page directives
- Scripting block
- Page Rendering block
पहला हिस्सा डायरेक्टिव से जुड़ा होता है दूसरा हिस्सा स्क्रिप्ट ब्लॉक से है। स्क्रिप्ट ब्लॉक के भीतर उस पेज से जुड़े हुए सब या फ़नक्स रूटीन या मेथड लिखे जाते हैं। एक बात ध्यान देने वाली है aspx पेज के भीतर पेज रेंडरिंग ब्लॉक के भीतर जितने भी कंट्रोल्स होते हैं उनकी आईडी वगैरह प्रॉपर्टीज होती है। हम इसमें से किसी भी कंट्रोल को स्क्रिप्ट ब्लॉक के भीतर एक्सेस कर सकते हैं और उनकी प्रॉपर्टीज वगैरह को गेट सेट कर सकते हैं।
एएसपीक्स वेब पेज के सर्वर कंट्रोल के ऊपर किसी प्रकार के घटित होने वाली घटनाओं का हैंडलिंग सर्वर के ऊपर होता है। जिस सर्वर कंट्रोल ऑब्जेक्ट पर घटना घटित होती है उस ऑब्जेक्ट को इवेंटहैंडलर मेथड के भीतर Object डेटा टाइप पैरामीटर के रूप में दिया जाता है। इसके अलावा घटना से संबंधित अतिरिक्त जानकारी को एक अन्य पैरामीटर के रूप में इवेंटहैंडलर में दिया जाता है। यह दुसरा पैरामीटर EventArgs क्लास या ऑब्जेक्ट के टाइप के रूप में दिया जाता है। जब किसी खास प्रकार के कंट्रोल के ऊपर घटना घटित होती है जैसे की इमेज कंट्रोल के ऊपर क्लिक करने पर जो घटना घटित होती है उससे संबंधित अतिरिक्त जानकारी के लिए ImageClickEventArgs दिया जाता है जो EventArgs से व्युत्पन्न derived है।
जब ASP.NET के किसी कंट्रोल के ऊपर घटना घटित होती है उस घटना को हैंडल करने के लिए इवेंट हैंडलर मेथड होना चाहिए और घटना को उस इवेंट हैंडलर के साथ wired माना जाता है जिसे AutoEventWireup नामक पेज अटरीब्यूट के साथ दर्शाया जाता है।
Page.IsPostBack Property
जैसा कि हम जानते हैं कि ASP.NET के अंतर्गत पेज लाइफ साइकिल के दौरान कई तरह की घटनाएं घटित होती है। कुछ घटनाएं पेज से संबंधित होती है तो दूसरी ओर पेज पर रखे हुए कंट्रोल्स के ऊपर भी घटनाएं घटित होती है लेकिन यह बात याद रखने लायक है कि पेज पर रखे हुए कंट्रोल की घटनाएं तब घटित होती है जब पेज का लोड इवेंट हो गया हो और पेज रेंडर इवेंट होने वाला हो। कहने का अर्थ है कि PreRender प्रीरेंडर इवेंट और पेज लोड इवेंट के बीच में पेज पर रखे हुए कंट्रोल्स की घटनाएं घटित होती है। जैसे अगर किसी बटन कंट्रोल को क्लिक किया जाता है तो उस क्लिक करने की घटना का इवेंट तब फायर होता है जब पेज लोड हो गया हो और पेज रेंडर होने वाला हो।
जब पेज का इनीशिएलाइजेशन होता है तो उस पेज में जितने भी कंट्रोल्स रखे होते हैं उनका इनीशिएलाइजेशन होता है। मान लीजिए कि एक पेज दो बार लोड हो रहा है तो उस पेज पर रखे कंट्रोल्स दोबारा से इनीशिएलाइज होंगे। अतः अगर किसी ड्रॉपडाउन का इनीशिएलाइजेशन हुआ है तो उसमें वह आइटम्स दिखाई देगा लेकिन अगर पेज दोबारा रीलोड होता है तो वह ड्रॉपडाउन दोबारा से इनीशिएलाइजेशन होने पर वही आइटम्स दोबारा से डब्ल कर दिखाई देगा जो कि नहीं होना चाहिए। अतः इस तरह की समस्याओं से बचने के लिए यह जरूरी है कि हमें मालूम हो कि पेज का पोस्टबैक हुआ है अथवा नहीं। अगर पेज का पोस्टबैक हुआ है तो इस हालत में पेज के कंट्रोल का दोबारा से इनीशिएलाइजेशन नहीं होना चाहिए। इसी उद्देश्य से Page.IsPostBack प्रॉपर्टी यूज किया जाता है। Page.IsPostBack = True यह बताता है कि पेज का पोस्टबैक हुआ है।
AutoPostBack Property
किसी भी कंट्रोल की घटना से जुड़ा हुआ एक महत्वपूर्ण प्रॉपर्टी AutoPostBack है। यह प्रॉपर्टी पेज के पोस्टबैक से संबंधित है। जब किसी कंट्रोल में कोई घटना घटित होती है जैसे किसी टेक्स्ट बॉक्स में टेक्स्ट में चेंज करने पर या ड्रॉपडाउन के किसी आइटम को चेंज करने पर या रेडियो बटन में से किसी एक रेडियो बटन का चेंज करने पर घटनाएं घटित होती है जिसके बाद उस घटना को सर्वर पर हैंडल करने के लिए भेजा जा सकता है और नहीं भी भेजा जा सकता है। अगर हमें सर्वर पर हैंडल करने के लिए भेजना है तो इसके लिए हम AutoPostBack=True यूज करते हैं।
ASP.NET के किसी पेज के भीतर पेज डायरेक्टिव कंपाइलर को पेज के संबंध में कई सारी बातों की जानकारी देता है अगर उसमें Debug=False हो तो कंपाइलर उस पेज का debugging नहीं करता है। इसी तरह यदि Trace=False हो तो कंपाइलर उस पेज का Tracing नहीं करता है। पेज की प्रोग्रामिंग किस भाषा में हुई है, इसकी जानकारी Language एटट्रिब्यूट से ज्ञात होता है। जिस भाषा में कोडिंग होती है उसी भाषा का कंपाइलर उस पेज को कंपाइल करने के लिए यूज किया जाता है। उदाहरण के लिए Language="C#" हो तो उस पेज का C# कंपाइलर होगा।
© अजीत कुमार, सर्वाधिकार सुरक्षित।
इस आलेख को उद्धृत करते हुए इस लेख के लिंक का भी विवरण दें। इस आलेख को कॉपीराइट सूचना के साथ यथावत साझा करने की अनुमति है। कृपया इसे ऐसे स्थान पर साझा न करें जहाँ इसे देखने के लिए शुल्क देना पडे।
No comments:
Post a Comment