Passing Information Between Pages – अक्सर हमें एक Web Page के Data को किसी दूसरे Page पर Transfer करने की जरूरत होती है, क्योंकि HTTP एक Stateless Protocol है और एक Page के Data को दूसरे Page पर Transfer करने के लिए हमें एक व्यवस्थित तरीके की जरूरत होती है।
इस जरूरत को पूरा करने के लिए यानी किसी Request को किसी अन्य Page पर Redirect या Transfer करते समय जब हम पहले Page के कुछ Data को उस Redirect या Transfer किए जाने वाले दूसरे Page पर Pass करना चाहते हैं, तब हमें ASP.NET के विभिन्न Context Objects की Settings के बारे में किसी प्रकार की चिन्ता करने की जरूरत नहीं होती। क्योंकि Context से सम्बंधित सभी Settings को ASP.NET Framework स्वयं Automatically Manage करता है।
लेकिन फिर भी Redirection या Transferring के दौरान Data किस प्रकार से एक Page से दूसरे Page के बीच Transfer होता है, इस प्रक्रिया को समझना निश्चित रूप से ASP.NET को और बेहतर तरीके से समझने में उपयोगी साबित होगा।
इस पूरी प्रक्रिया को एक उदाहरण के रूप में समझें तो मानलो कि हम चाहते हैं कि Request जिस दूसरे Page पर Transfer या Redirect हो रहा है, वह दूसरा Page किसी Specific तरीके से इस बात को तय करे कि वह क्या Message Display करेगा।
इस जरूरत को पूरा करने के कई तरीके हो सकते हैं। लेकिन एक Simple तरीके के रूप में हम ASP.NET के Session State Feature को Use कर सकते हैं, जिसके विषय में हम आगे विस्तार से जानेंगे। जबकि दूसरे तरीके के रूप में हम ASP.NET Server पर Request के रूप में Pass होने वाले URL में Query String Information को Add कर सकते हैं और जब हम ऐसा करते हैं, तो हमारा URL कुछ निम्नानुसार दिखाई दे सकता है:
SecondPage.aspx?msg=firstMessage
इस URL में msg नाम का एक Query Parameter है, जिसमें Value के रूप में firstMessage है। इस Query Parameter को उस Webpage द्वारा Read किया जा सकता है, जिस पर Request को Redirect या Transfer किया जा रहा है और इस काम को करने के लिए हम SecondPage.aspx Page को निम्नानुसार तरीके से Design कर सकते हैं:
[code] File Name: SecondPage.aspx <%@Page Language="C#" AutoEventWireup="true" CodeBehind="SecondPage.aspx.cs" Inherits="EventsAndContexts.SecondPage" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/x html"> <head runat="server"> <title>Second Page</title> </head> <body> <h1 id="h1PlaceHolder" runat="server"/> </body> </html> [/code]
[code] File Name: SecondPage.aspx.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace EventsAndContexts { public partial class SecondPage : System.Web.UI.Page { protectedvoid Page_Load(object sender, EventArgs e) { //Retrieve Query Parameter Value of msg from URL string msg = Request.QueryString["msg"]; if (msg != null) { if (msg == "firstMessage") { h1PlaceHolder.InnerText = "This is First Conditional Text Message."; } else { h1PlaceHolder.InnerText = "This is Second Conditional Text Message."; } } else { h1PlaceHolder.InnerText = "No Text Message for Second Page."; } } } } [/code]
जब हम उपरोक्तानुसार SecondPage.aspx.cs Code Behind File में Program Logic लिखकर इस Page को Run करते हैं, तो हमें निम्नानुसार Output Page प्राप्त होता है:
क्योंकि इस Page को Run करते समय SecondPage.aspx Page के साथ कोई Query Parameter Specified नहीं है। लेकिन यदि हम हमारे Web Browser के Addressbar में निम्नानुसार तरीके से Query Parameter Specify करते हुए Page को फिर से Reload करें-
जबकि Query Parameter msg की Value को निम्न चित्रानुसार Change कर देने पर हमें प्राप्त होने वाला Resultant Webpage निम्नानुसार बदल जाता है:
हमें इस Example द्वारा अलग-अलग Parameter को Specify करने पर जो Output प्राप्त हो रहा है, वह केवल निम्न Code Line की वजह से हो रहा है:
//Retrieve Query Parameter Value of msg from URL
string msg = Request.QueryString[“msg”];
क्योंकि इस Statement में हमने Request Object केQueryString Collection के माध्यम से msg नाम के Query Parameter की Value को Retrieve किया है और इस Query Parameter की Value को एक String Type के msg नाम के Variable में Store कर दिया है। परिणामस्वरूप जब हम हमारे Web Browser के Addressbar में निम्न URL Specify करते हैं:
/SecondPage.aspx?msg=firstMessage
तब msg में Value के रूप में firstMessage मान होता है। फलस्वरूप Request की Processing होते समय SecondPage.aspx.cs Code Behind File में Specified निम्न Logic Code Execute होता है:
[code] if (msg != null) { if (msg == "firstMessage") { h1PlaceHolder.InnerText = "This is First Conditional Text Message."; } . . . } [/code]
परिणामस्वरूप हमें निम्न चित्रानुसार Output प्राप्त होता है:
लेकिन जब हम हमारे Web Browser के Addressbar में निम्न URL Specify करते हैं:
/SecondPage.aspx?msg=secondMessage
तब msg में Value के रूप में secondMessage मान होता है। फलस्वरूप Request की Processing होते समय SecondPage.aspx.cs Code Behind File में Specified निम्न Logic Code Execute होता है:
[code] if (msg != null) { . . . } else { h1PlaceHolder.InnerText = "This is Second Conditional Text Message.”; } [/code]
परिणामस्वरूप हमें निम्नानुसार Output प्राप्त होता है:
लेकिन जब हमारे URL में कोई Query Parameter नहीं होता, तब SecondPage.aspx.cs Code Behind File में Specified निम्नानुसार External else Part का Logic Code Execute होता है:
[code] else { h1PlaceHolder.InnerText = "No Text Message for Second Page."; } [/code]
परिणामस्वरूप हमें निम्नानुसार Output प्राप्त होता है:
हालांकि उपरोक्त Code में हमने SecondPage.aspx File की Code Behind File के Code को तो Specify कर दिया और Web Browser के Address Bar में Query Parameters को Specify करते हुए इसके Resultant Effect को भी देख लिया है।
लेकिन वास्तव में हम स्वयं अपने Web Browser में Query String को Manually नहीं लिखते, बल्कि किसी अन्य Page में Specified किसी HyperLink को Click करते हैं अथवा किसी दूसरे Page में Specified Redirect या Transfer Statement द्वारा ये दूसरा Page Load होता है।
इसलिए यदि हम Transfer() Method का प्रयोग करते हुए SecondPage.aspx Page में Conditional Message Load करना चाहते हैं, तो इस जरूरत को पूरा करने के लिए हम हमारे Default.aspx की Code Behind File को निम्नानुसार Modify कर सकते हैं:
[code] File Name: Default.aspx.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace EventsAndContexts { public partial class Default : System.Web.UI.Page { protectedvoid Page_Load(object sender, EventArgs e) { switch (Request.Browser.Browser) { case"Chrome": Server.Transfer("SecondPage.aspx?msg=firstMessage"); break; case"IE": Server.Transfer("SecondPage.aspx?msg=secondMessage"); break; default: Server.Transfer("SecondPage.aspx"); break; } } } } [/code]
जब हम उपरोक्तानुसार तरीके से Default.aspx.cs File में Code लिखते हैं, तो अलग-अलग Web Browsers मेंDefault.aspx Page को Open करने पर हमें निम्नानुसार तीन अलग Output प्राप्त होते हैं, जो कि पूरी तरह से इस Code Behind File में Specified Transfer URL के Query Parameter की Value पर आधारित है:
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Core ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Core ASP.NET WebForms in Hindi | Page:647 | Format: PDF