Automatic Postback in ASP.NET WebForms

Automatic Postback in ASP.NET WebForms – हालांकि ASP.NET Framework, Desktop Applications के लिए  Develop किए गए Event Driven Model को  Web Application के लिए  Emulate करता है, लेकिन ये Emulation पूरी तरह से समान रूप से काम नहीं करता। क्योंकि Web Applications में Event तो Client Side में Trigger होते हैं, लेकिन उनकी Processing Server Side में होती है। जिसकी वजह से जो Events काफी तेजी से Fire होते हैं, उनकी Processing ठीक Desktop Applications की तरह होना तो किसी भी स्थिति में सम्भव नहीं है।

उदाहरण के लिए MouseMove Event काफी तेजी से Trigger होता है, इसलिए  Desktop Application में तो ये Event Practically Useful है, लेकिन एक Web Application में इस Event को  Use करना पूरी तरह से Impractical है। क्योंकि जितनी तेजी से ये Event Trigger होता है, उतनी तेजी से Server पर Send नहीं हो सकता।

इसलिए  सामान्‍यत: किसी Web Application में MouseMove जैसे Events को  Server Side में Process नहीं किया जाता, बल्कि इसके लिए  Client Side JavaScript को  Use करना ज्यादा बेहतर Option होता है अथवा इस प्रकार के Rapidly Fire होने वाले Events को  बेहतर तरीके से Handle करने के लिए  ASP.NET AJAX Controls का प्रयोग किया जा सकता है।

यदि आप  HTML Forms के बारे में जानते हैं, तो आपको  पता होगा कि  HTML में किसी Page को  Submit करने का केवल एक ही Basic तरीका होता है और वो है<submit> Element यानी Submit Button का प्रयोग करना।

इसलिए  यदि हम हमारे.aspx Web Form में इन्हीं Standard  HTML Server Controls का प्रयोग करते हैं, तब भी हमारे पास अपने Web Form को  Server पर Send करने के लिए  यही एक मात्रSubmit Button होता है।

लेकिन जब एक बार कोई Page Postback हो जाता है, यानी User किसी Page के लिए  Server पर Request Sendकरता है और वह Page, ASP.NET Server द्वारा Process होकर फिर से User के Client Web Browser में Response के रूप में Load हो जाता है, उसके बाद ASP.NET Framework उस Posted Back Page पर अन्‍य Events (जैसे कि वे Events जो कि इस बात को  Indicate करते हैं कि किसी Textbox की Value Change हुई है या नहीं।) को  समान समय पर Fire करने में सक्षम हो जाता है।

निश्चित रूप से हम समझ सकते हैं कि केवल इतनी Functionality किसी Rich Web Form आधारित Web Applications Develop करने के लिए  काफी नहीं हैं। लेकिन जब हम ASP.NET के Dynamic Web Controls का प्रयोग करके अपना Rich Web Form Create करते हैं, तब ये Dynamic Web Controls हमारे ASP.NET Framework के Event Driven Model को  Automatic Postback Feature के माध्‍यम से Extend करने की सुविधा Provide कर देते हैं।

इस Automatic Postback Feature के कारण ASP.NET Web Form केDynamic Input Controls विभिन्न प्रकार के Events Fire करने में सक्षम हो जाते हैं और हमारा Server Side Code उन Events को  Immediately Response करने में भी सक्षम हो जाता है।

उदाहरण के लिए  हमारे Web Page पर स्थित किसी Checkbox को  जब कोई User Click करता है, तो इस Click के कारण Options की List के Selection में Change होता है अथवा किसी Textbox के Text में Change करके जब User Tab Key का प्रयोग करते हुए या किसी अन्‍य तरीके से किसी दूसरे Textbox पर Focus को  Move करता है, तब इन Actions के Response में Fire होने वाले इन Events के लिए  Postback Trigger होता है। यानी इन Actions का Notification एक PostBack के माध्‍यम से ASP.NET Server को  प्राप्त होता है।

हालांकि Web Application में ये Events उतने अच्छे तरीके से Trigger नहीं होते, जितने किसी Desktop Application के लिए  Trigger होते हैं। लेकिन फिर भी Static Form को  Submit Button द्वारा Web Server पर Processing के लिए  Send किए जाने की तुलना मेंये तरीका काफी ज्यादा उन्नत होता है।

Automatic Postbacks को  Use करने के लिए  हमें हमारे Web Form में Use किए जाने वाले Web Controls की AutoPostBack Property को True Set करना होता है, क्योंकि Default रूप से हर Web Control की इस Property का मान Falseहोता है और यदि किसी Web Control द्वारा Trigger होने वाले Events के लिए  Automatically Postback Send करने की जरूरत न हो, तो हमें इस Property को  False ही रहने देना चाहिए।

जब हम अपने किसी Web Control की इस AutoPostBack Property को True Set करते हैं, तब ASP.NET Framework, Client Side व Server Side Codes के बीच के Gap को  Bridge करने के लिए  Client Side JavaScript Abilities को  Use करता है।

इसलिए  जब हम कोई ऐसा Webpage Create करते हैं, जिस पर स्थित एक या अधिक Web Controls होते हैं, जिन की AutoPostBack Property को True Set किया गया होता है, तो इन Controls द्वारा Trigger होने वाले Events को  Handle करने के लिए  ASP.NET, Rendered  HTML Page में एक JavaScript Function Add कर देता है, जिसका नाम __doPostBack() होता है। जब ये JavaScript Function Call होता है, तो ये एक Postback Trigger करता है और Page पर स्थित Web Form को  उसके सारे Data के साथ फिर से Web Server पर Send कर देता है।

इस Function के अलावा ASP.NET Framework, User के Web Browser में Render होने वाले Webpage में दो Hidden Input Elements भी Add करता है, जिनका प्रयोग __doPostBack() Function, Web Form की Information को  फिर से Web Server पर Send करने के लिए  करता है।

इस Information के रूप में Event Fire करने वाले Controls का ID तथा Event से सम्बंधित अन्‍य जरूरी Data होते हैं। जबकि Initially यानी जब Webpage को  User द्वारा पहली बार Request किया जाता है, तब ये Elements Initial Stage पर कुछ निम्नानुसार तरीके से पूरी तरह Empty होते हैं, जिन के value Attribute में कोई Data नहीं होता-

[code]
<divclass="ASPNetHidden">
<inputtype="hidden"name="__EVENTTARGET" id=“__EVENTTARGET"value=""/>
<inputtype="hidden"name="__EVENTARGUMENT" id=“__EVENTARGUMENT"value=""/>

. . .
</div>
[/code]

इन Hidden Elements के value Attribute में Value Set करने का काम__doPostBack() Function का होता है, जो कि अपना काम कुछ निम्‍नानुसार  Codes द्वारा करता है:

[code]
<scripttype="text/javascript">
//<![CDATA[
var theForm = document.forms['frmCalculate'];
if (!theForm) {
theForm = document.frmCalculate;
}

function__doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
[/code]

ये Function ही उपरोक्त Hidden Elements केvalueAttributeको  Trigger होने वाले Event से सम्बंधित Appropriate Value से Set करता है और फिर Form को  Submit कर देता है।

यहां ध्‍यान रखने वाली बात ये है कि ASP.NET Framework User को  Send किए जाने वाले Response  HTML Page में इस __doPostBack() JavaScript Function को  Automatically Create करता है और हम हमारे Web Form पर जितने ज्यादा Web Controls की AutoPostBack Property को True Set रखते हैं, इस JavaScript Function के automatically Generate होने वाले Codes भी उतने ही ज्यादा होते जाते हैं, क्योंकि हर Control द्वारा Trigger होने वाले Event के लिए  अलग से Event Data Set किया जाना जरूरी होता है और इस काम को  करने के लिए  अलग से JavaScript Statement Generate होता है।

अन्त में जितने भी Web Controls के लिए AutoPostBack Property को True Set किया गया होता है, वे सभी __doPostBack() Function से onclick या onchange जैसे किसी Attribute के माध्‍यम से Connect हो जाते हैं। ये Attributes इस बात को  Indicate करते हैं कि Web Browser द्वारा Client Side JavaScript के माध्‍यम से Trigger होने वाले onclick या onchange Event के Response में किस Action को  Perform करना है।

उदाहरण के लिए  निम्न Example Code txtFirstValue नाम के Textbox Control के लिए  एक Rendered  HTML Code Show कर रहा है, जो कि TextBox में किए जाने वाले Changes को  Automatically Postback करता हैं।

परिणामस्वरूप जब भी User इस Textbox के Text को  Change करता है, Client Side Web Browser का onchange JavaScript Event Fire होता है, जिसे Handle करने के लिए __doPostBack() Function Execute होता है और हमारा Current Page Processing के लिए  ASP.NET Server पर Send हो जाता है।

[code]
<inputname="txtFirstValue"type="text"value="1003"
onchange="javascript:setTimeout(&#39;__doPostBack(\&#39;txtFirstValue\&#39;,\&#39;\&#39;)&#39;, 0)"
onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;"
id="txtFirstValue"/>
[/code]

अन्‍य शब्दों में कहें तो ASP.NET __doPostBack() Function का प्रयोग करते हुए Client Side JavaScript Event को  Automatically Server Side ASP.NET Event में Change कर देता है।

Core ASP.NET WebForms in Hindi - BccFalna.com: TechTalks in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Core ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Core ASP.NET WebForms in Hindi | Page:647 | Format: PDF

BUY NOW GET DEMO REVIEWS