Saving a complex object in session state

I have a separate class in my App_Code folder (.NET project) called "StateBag.cs"

using System; using System.Text;

[Serializable()]
public class MyStateBag
{
    public MyStateBag(){}
    private string _MemberID = string.Empty;
    public string MemberID
    {
        get { return _MemberID; }
        set { _MemberID = value; }
    }
}

Now I want to be able to update the MemberID value from any page of my web project.

Example: -

Default.aspx.cs: -

  public partial class _Default : System.Web.UI.Page
  {
    public StateBag MyStateBag
    {
        get { return (StateBag)Session["MyStateBag"]; }
        set { Session["MyStateBag"] = value; }
    }

    protected void Page_Init(object sender, EventArgs e)
    {
        this.MyStateBag = (StateBag)Session["MyStateBag"];
    }

    .... }

On my Default.aspx.cs page, I'm trying to set memberID to MyStateBag: -

 if (HttpContext.Current.Session["MyStateBag"] == null)
        {
            HttpContext.Current.Session["MyStateBag"] = new StateBag();
        }
        ((StateBag)HttpContext.Current.Session["MyStateBag"]).MemberID = memID;

However, I get a conflict: "System.Web.UI.StateBag" does not contain a definition for "MemberID", and there is no extension method "MemberID" that takes the first argument of the type "System.Web.UI.StateBag" (you are missing the using or directive assembly reference?)

Do I need to link to my Default.aspx.cs page, which I skip?

... , , "About.aspx.cs".

: - memberinfo = StateBag["MemberID"]

- ?

+4
1

, Session, , . , Default.aspx.cs - :

//Make sure there is an object saved for this user
if(Session["StateBag"] == null)
   Session["StateBag"] = new StateBag();

//Set what you need
((StateBag)Session["StateBag"]).MemberID = 1234;

//Make sure there is an object saved for this user
if(Session["StateBag"] == null)
   Session["StateBag"] = new StateBag();

//Get what you need
int memberID = ((StateBag)Session["StateBag"]).MemberID
+2

Source: https://habr.com/ru/post/1529328/


All Articles