开发者

Where I should declare a session variable in asp.net

开发者 https://www.devze.com 2022-12-21 04:29 出处:网络
I am building a Asp.net Application. I need to save a HashTable in a session. At page load i am writing

I am building a Asp.net Application. I need to save a HashTable in a session.

At page load i am writing

 protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
       Session["AttemptCount"]=new Hashtable(); //Because of this line.
    }   
}

Here problem is, when a user refresh the page, session["AttemptCount"] also get refreshed. I want to know where should I declare

Session["AttemptCount"]=new Hashtable();

So that my seesion do not get refeshed.

EDIT In Global.asax, this s开发者_Python百科ession will get started, as soon as user opens the website. I want to creat this session only if user go to a particular page. i.e Login.aspx


Do it in the Session_Start method in your Global.asax like so...

protected void Session_Start(object sender, EventArgs e)
{
    Session["AttemptCount"]=new Hashtable();
}

Update:

Then simply just do a check to see if the session variable exists, if it doesn't only then create the variable. You could stick it in a property to make things cleaner like so...

public Hashtable AttemptCount
{
    get 
    {
        if (Session["AttemptCount"] == null)
            Session["AttemptCount"]=new Hashtable();
        return Session["AttemptCount"];
    }
}

And then you could just call on the property AttemptCount wherever you need like so...

public void doEvent(object sender, EventArgs e)
{
    AttemptCount.Add("Key1", "Value1");
}


You could make a property like this in your page:

protected Hashtable AttemptCount
{
  get
  {
    if (Session["AttemptCount"] == null)
      Session["AttemptCount"] = new Hashtable();
    return Session["AttemptCount"] as Hashtable; 
  }
}

then you can use it without having to worry:

protected void Page_Load(object sender, EventArgs e)
{
  this.AttemptCount.Add("key", "value");
}


test if it exists first

 protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
       if(Session["AttemptCount"] == null)
       {
          Session["AttemptCount"]=new Hashtable(); //Because of this line.
       }
    }   
}

though the session_start is better, you only need to uses it on one page but you can create it for each session.


Hashtable hastable_name=new Hashtable()
Session["AttemptCount"]=hastable_name


Look at Global.asax and the Application_Started (I think) and there is one for session started too.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号