Search code examples
c#sessiondeclare

How to declare session variable in C#?


I want to make a new session, where whatever is typed in a textbox is saved in that session. Then on another aspx page, I would like to display that session in a label.

I'm just unsure on how to start this, and where to put everything.

I know that I'm going to need:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["newSession"] != null)
    {
        //Something here
    }
}

But I'm still unsure where to put everything.


Solution

  • newSession is a poor name for a Session variable. However, you just have to use the indexer as you've already done. If you want to improve readability you could use a property instead which can even be static. Then you can access it on the first page from the second page without an instance of it.

    page 1 (or wherever you like):

    public static string TestSessionValue 
    { 
        get 
        {
            object value = HttpContext.Current.Session["TestSessionValue"];
            return value == null ? "" : (string)value;
        }
        set 
        {
            HttpContext.Current.Session["TestSessionValue"] = value;
        }
    }
    

    Now you can get/set it from everywhere, for example on the first page in the TextChanged-handler:

    protected void TextBox1_TextChanged(Object sender, EventArgs e)
    {
        TestSessionValue = ((TextBox)sender).Text;
    }
    

    and read it on the second page:

    protected void Page_Load(Object sender, EventArgs e)
    {
        this.Label1.Text = Page1.TestSessionValue; // assuming first page is Page1
    }