În cazul în care ar trebui să declare o variabilă de sesiune în asp.net

voturi
6

Sunt construirea unei aplicații Asp.net. Am nevoie pentru a salva un Hashtable într-o sesiune.

La pagina de încărcare i-am scris

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

Aici este problema, atunci când un utilizator actualiza pagina, [ „AttemptCount“] Sesiunea de asemenea revigorați. Vreau să știu unde ar trebui să declare

Session[AttemptCount]=new Hashtable();

Așa că seesion mea nu te refeshed.

EDIT În Global.asax, această sesiune va începe, imediat ce utilizatorul deschide site - ul web. Vreau să această sesiune doar creat dacă utilizatorul merge la o anumită pagină. și anume Login.aspx

Întrebat 26/02/2010 la 19:32
sursa de către utilizator
În alte limbi...                            


5 răspunsuri

voturi
0

Uită-te la Global.asax și Application_Started (cred) și există una pentru sesiune a început prea.

Publicat 26/02/2010 la 19:34
sursa de către utilizator

voturi
14

Fa - o în Session_Startmetoda dvs. în Global.asax ca asa ...

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

Actualizați:

Apoi, pur și simplu, face doar o verificare pentru a vedea dacă există variabila de sesiune, în cazul în care nu numai atunci creează variabila. Ai putea lipi într-o proprietate pentru a face lucrurile mai curat ca asa ...

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

Și apoi ai putea suna pe proprietatea AttemptCountori de câte ori aveți nevoie ca atât de ...

public void doEvent(object sender, EventArgs e)
{
    AttemptCount.Add("Key1", "Value1");
}
Publicat 26/02/2010 la 19:34
sursa de către utilizator

voturi
2

de testare în cazul în care există mai întâi

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

deși session_start este mai bine, trebuie doar să-l folosește pe o singură pagină, dar îl puteți crea pentru fiecare sesiune.

Publicat 26/02/2010 la 19:47
sursa de către utilizator

voturi
3

Ai putea face o proprietate ca aceasta în pagina:

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

atunci îl puteți folosi fără a fi nevoie să vă faceți griji:

protected void Page_Load(object sender, EventArgs e)
{
  this.AttemptCount.Add("key", "value");
}
Publicat 26/02/2010 la 19:49
sursa de către utilizator

voturi
1
Hashtable hastable_name=new Hashtable()
Session["AttemptCount"]=hastable_name
Publicat 28/04/2011 la 18:09
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more