Page Framework Initialization
ये वह State होती है जिसमें ASP.NET सबसे पहले Page को Create करता है। इस State में हमारे .aspx Page पर हम जिन भी Controls को Define करते हैं, उन्हें Create किया जाता है। साथ ही यदि उस .aspx Page को पहली बार Request न किया गया हो, यानी यदि वह Page एक Postback Request के लिए Create हो रहा हो, तो ASP.NET Server, View State Information को Deserialize करता है और उसे सभी Controls पर Apply करता है।
इस Stage में Page.Init Event Fire होता है। हालांकि इस Event को Page द्वारा Event Handler Create करके कभी-कभार ही Handle किया जाता है, क्योंकि Page के Initialization Process को इस Event Handler द्वारा Initialize करना अभी भी काफी जल्दी होता है। क्योंकि इस Event के Trigger होने तक Page के सभी Control Objects Created नहीं हुए होते हैं, न View State की Information Load हुई होती हैं।
User Code Initialization
Page Processing के इस Stage में Page.Load Event Fire होता है। ज्यादातर Webpages इसी Event को Page का Initialization Perform करने यानी Page के Controls को Dynamic Contents से Fill करने या Controls को Configure करने के लिए Use करते हैं, क्योंकि इस Event के Execute होने तक Page के सभी Dynamic Controls Create हो चुके होते हैं। साथ ही Postback Object भी Populate हो चुका होता है।
जब भी User किसी Page के लिए Request Perform करता है, Page.Load Event हमेंशा Fire होता है। यहां तक कि यदि User एक ही Page के लिए बार-बार Request करे, तो उसकी हर Request या Postback Request के लिए ये Event बार-बार Fire होता है।
लेकिन ASP.NET एक तरीका Provide करता है, जिसकी वजह से एक Programmer के रूप में हम इस बात का पता लगा सकते हैं कि Current Page को User द्वारा पहली बार Request किया गया है या वह Request एक Postback Request है।
View State को ASP.NET द्वारा Automatically Maintain किया जाता है। जिसकी वजह से जब User किसी Page के लिए पहली बार Request करता है, तो उस समय View State के रूप में ASP.NET Server पर कोई Data Send नहीं होता।
लेकिन जब User उस Page पर किसी Control की Value को Change करके या किसी अन्य तरीके से दूसरी Request Perform करता है, तो इस बार Post Back के दौरान उस Page के सभी Controls के Data को Current Page से Web Server पर View State Data के रूप में Automatically Send कर दिया जाता है। परिणामस्वरूप इस View State Data को Server Side में फिर से Reuse करके Page के सभी Controls को उनकी Current Value से फिर से Dynamically Fill कर दिया जाता है।
Post Back व View State Data के इस प्रकार से काम करने के कारण ASP.NET Page Creation के इस तरीके में हमें कई Benefit भी प्राप्त होते हैं।
उदाहरण के लिए यदि Page के Data को किसी Database Query द्वारा Fill किया जा रहा हो, तो Database पर केवल एक ही बार Query को Fire करना होता है। क्योंकि अगली Request Perform होने पर Post Back के कारण View State Data के रूप में Database Query का Result Client से Server पर Automatically पहुंच जाता है।
जिसकी वजह से Page के Web Form Controls को Database के Data से Fill करने के लिए Database पर फिर से Query Fire करने की जरूरत नहीं होती, बल्कि View State के Data द्वारा उन्हें Automatically Fill कर दिया जाता है।
परिणामस्वरूप Database पर Query Fire करने व Retrieved Data से Page के Web Controls को Fill करने में लगने वाला समय बच जाता है, जिससे हमारे ASP.NET Dynamic Pages की Performance काफी Improve हो जाती है।
Page की Current State का पता लगाने के लिए ASP.NET हमें Page Class के लिए IsPostBack नाम की एक Property भी Provide करता है, जिसमें केवल उस स्थिति मेंही False मान होता है, जबकि User ने उस Page के लिए पहली बार Request Perform किया हो और इस Property को हम निम्नानुसार Use कर सकते हैं:
[code] if (!IsPostBack) { // It's safe to initialize the controls for the first time. } [/code]
IsPostBack के स्थान पर हम Page.IsPostBack भी Use कर सकते हैं, क्योंकि IsPostBack वास्तव में Page Class की ही एक Property है। ये तरीका भी इसलिए काम करता है, क्योंकि सभी Server Controls में एक Page Property जरूर होती है जो कि Current Page को Expose यानी Represent करता है। अन्य शब्दों में कहें तो Page.IsPostBack व IsPostBack दोनों समान ही हैं और हम जिसे चाहें उसे Use कर सकते हैं।
ध्यान रखने वाली एक बात ये भी है कि Page पर Change की गई हर Property की जानकारी View State में Stored रहती है। Page.Load Event के दौरान किसी Control को Initialize करना भी एक Change के रूप में Count होता है, इसलिए हम जिस किसी भी Value को Change करते हैं, वह View State में Persist रहती है, जिसकी वजह से हमारे View State की Size भी हर Trip के साथ ही बढती जाती है।
इसलिए View State को और अधिक Efficient बनाए रखने तथा Page की Size को छोटा रखने के लिए बेहतर यही होता है कि Controls को Event Handler Codes के माध्यम से Initialize न किया जाए। बल्कि Controls की Properties को Properties Sidebar द्वारा या Source Mode में ASP Markup के Attributes द्वारा Set किया जाए। इस तरीके को Use करने पर View State में ये Properties Persist नहीं रहतीं, जिसकी वजह से View State Data कम ही रहता है। परिणामस्वरूप Page की Performance बनी रहती है क्योंकि Page की Size छोटी ही रहती है।
साथ ही जब भी कभी इन Web Controls को Coding के द्वारा Initialize करना सम्भव हो, उन Controls की View State Property को उनकी EnableViewState Property को False Set करके Disable ही कर देना चाहिए, ताकि उन Controls के लिए Request/Response Cycle के दौरान जब भी कभी Page.Load Event Fire हो, तब View State Data Transfer न हो, फिर Current Request कोई Postback Request ही क्यों न हो।
Validation
ASP.NET हमें Validation Controls भी Provide करता है जो अन्य User Input Controls को Automatically Validate करते है और Input किए गए Data के Valid न होने की स्थिति में Error Message Display करते हैं। ये Validation Events किसी भी Page के Load होने के बाद लेकिन किसी भी अन्य Event के Trigger होने से पहले Fire होते हैं।
फिर भी Validation Controls स्वयं अपने स्तर पर अपना Validation का काम Perfect तरीके से करते हैं, जिसका मतलब ये है कि हमें किसी भी Validation Event को Respond करने की जरूरत नहीं हैं। बल्कि हम किसी अन्य Event Handler में Page.IsValid Property का प्रयोग करते हुए केवल इतना ही Check करते हैं कि Current Page Valid है या नहीं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Core ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Core ASP.NET WebForms in Hindi | Page:647 | Format: PDF