Passing Information using Items Collection – HttpContext Class

Passing Information using Items Collection in Hindi – HttpContext Class में एक Items नाम की Property भी होती है, जिसे Page की Processing के दौरान उस में Name/Value Pairs को Pass करने के लिए Use किया जा सकता है। इस Property का सबसे Common उपयोग ये है कि हम Page के Transfer या Redirection के दौरान Instructional Information को Pass करने के लिए इसे Use कर सकते हैं। इस Property को समझने के लिए हम हमारेDefault.aspx.cs Code Behind File को कुछ निम्नानुसार Modify कर सकते हैं:


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
        {
            protected void Page_Load(object sender, EventArgs e)
            switch (Request.Browser.Browser)
            {
                case "Chrome":
                Context.Items.Add("msg", 1);
                break;
                case "IE":
                Context.Items.Add("msg", 2);
                break;
            }
            Server.Transfer("SecondPage.aspx");
        }
    }
}

इस Code में मुख्‍य रूप से समझने वाली बात ये है कि जब हम Page Class से Derive होने वाली Class में होते हैं, तब उस Class के अन्‍तर्गत HttpContext Object कोContext Property द्वारा Directly Access किया जा सकता है, जो कि Current Property में Equivalent ही होता है।

HttpContext Object की Items Property एक प्रकार का Standard C# Collection Return करता है, जिसमें हम Add() Method का प्रयोग करते हुए Name Valueको Parameters के रूप में Pass करते हुए Add करते हैं।

इस Approach का एक मुख्‍य फायदा ये है कि हम एक से ज्यादा Pages के बीच C# के विभिन्न Types का प्रयोग करते हुए Data Pass कर सकते हैं, जबकि Query Parameter के रूप में हम केवल String Parameter के रूप में ही Data Pass कर सकते हैं।

जब हम इस Context.Items Collection का प्रयोग करते हुए Parameters को एक Page से दूसरे Page के बीच Transfer करना चाहते हैं, तब SecondPage.aspx.cs Code Behind File में लिखा जाने वाला 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
    {
       protected void Page_Load(object sender, EventArgs e)
       {
        /* Retrieve instruction as to which message to display from the
           HttpContext Items collection */
        int msg Code = Context.Items.Contains("msg") ? (int)Context.Items["msg"] : 0;
        if (msg Code == 1)
        {
           h1PlaceHolder.InnerText = "This is First Conditional Text Message.”;
        }
        elseif (msg Code == 2)
        {
           h1PlaceHolder.InnerText = "This is Second Conditional Text Message.”;
        }
        else
         {
           h1PlaceHolder.InnerText = "No Text Message for Second Page.”;
         }
       }
    }
}

Default.aspx.cs Code Behind File में हमने Context.Items Collection में Query Parameter के रूप में msg व Value के रूप में मान 1 व 2 को Add किया था, जो कि Transfer या Redirection के कारण जब SecondPage.aspx में Query Parameter के समान ही Key-Value के रूप में उपलब्ध रहता है।

इसलिए इन Keys के माध्‍यम से SecondPage.aspx.cs Code Behind File में जब हम Context.Items Collection से Key से Associated Values को Retrieve करना चाहते हैं, तब हमें निम्नानुसार तरीके से Context.Items.Contains() Method को Use करना होता है:


int msg Code = Context.Items.Contains("msg") ? (int)Context.Items["msg"] : 0; 

Context.Items.Contains()Method वास्तव में एक Object Return करता है, इसलिए Return होने वाले Object की Casting करना जरूरी होता है, जैसाकि उपरोक्त Code Lineमें किया गया है।

परिणामस्वरूप यदि हमने Default.aspx Page की Request Google Chrome Web Browser में की हो, तो इस Statement के Execute होने पर Integer Value के रूप में msg Codeमें हमें मान 1 प्राप्त होता है, जिसके फलस्वरूप  SecondPage.aspx.cs Code Behind File का निम्न Statement Block Execute होता है:


if (msg Code == 1)
{
  h1PlaceHolder.InnerText = "This is First Conditional Text Message.”;
}

जबकि Default.aspx Page की Request यदि Internet Explorer Web Browser में की हो, msg Codeमें हमें मान 2 प्राप्‍त होता है, जिसके फलस्वरूप  SecondPage.aspx.cs Code Behind File का निम्न Statement Block Execute होता है:


elseif (msg Code == 2)
{
  h1PlaceHolder.InnerText = "This is Second Conditional Text Message.”;
}

और यदि Default.aspx Page की Request यदि किसी अन्‍य Web Browser में की गई हो, msg Codeमें हमें मान 0 प्राप्‍त होता है, जिसके फलस्वरूप  SecondPage.aspx.cs Code Behind File का निम्न Statement Block Execute होता है:


else
{
  h1PlaceHolder.InnerText = "No Text Message for Second Page.”;
}

इस तरह से Context.Items Collection का प्रयोग करते हुए हम एक Page के Data को दूसरे Page में Pass करने से सम्बंधित उसी जरूरत को ज्यादा बेहतर तरीके से पूरा कर सकते हैं, जिसे पूरा करने के लिए हमने इसी Chapter में Query Parameter तरीके को Use किया था, जो कि ज्यादा Technical तरीका था।

Passing Context - Accessing Context from Outside the Page Class
Page Processing of ASP.NET Web Forms and States

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