2010-02-26 14 views
6

Ich baue eine Asp.net-Anwendung. Ich muss eine HashTable in einer Sitzung speichern.Wo ich eine Sitzungsvariable in asp.net deklarieren sollte

Bei Laden der Seite i

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

Hier Problem ist, wenn ein Benutzer die Seite aktualisieren, Session [ "AttemptCount"] auch erfrischen. ich wissen will, wo soll ich erklären

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

Damit meine seesion refeshed nicht bekommen.

BEARBEITEN In Global.asax wird diese Sitzung gestartet, sobald der Benutzer die Website öffnet. Ich möchte diese Sitzung nur erstellen, wenn der Benutzer zu einer bestimmten Seite wechselt. d) Login.aspx

Antwort

14

es in der wie so ...

in Ihrem Global.asax Session_Start Methode Do
protected void Session_Start(object sender, EventArgs e) 
{ 
    Session["AttemptCount"]=new Hashtable(); 
} 

Update:

Dann einfach nicht nur eine Überprüfung, ob die Session-Variable existiert, um zu sehen, wenn es doesn Erst dann erstelle ich die Variable. Man kann es in einer Eigenschaft haften bleiben, um die Dinge sauberer zu machen, wie so ...

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

Und dann könnte man einfach anrufen auf dem Grundstück AttemptCount wo immer Sie mögen, so brauchen ...

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

In Global.asax, wird diese Sitzung erhalten gestartet, sobald der Benutzer die Website öffnet. Ich möchte diese Sitzung nur erstellen, wenn der Benutzer zu einer bestimmten Seite wechselt. Beispiel: Login.aspx –

+0

Ich habe meine Antwort aktualisiert, Sie müssen nur überprüfen, ob es vorhanden ist, indem Sie gegen Null überprüfen –

+0

Was speichern Sie in der Hashtabelle? Ist es die Anzahl der Versuche des Benutzers, sich anzumelden? –

0

Schauen Sie Global.asax und die Application_Started (denke ich) und es gibt eine für die Sitzung gestartet.

2

Test, wenn es existiert erste

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

obwohl die session_start besser ist, Sie müssen es nur auf einer Seite verwendet, aber Sie können es für jede Sitzung erstellen.

3

Sie eine Eigenschaft wie dies in Ihrer Seite machen könnte:

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

dann können Sie es sich Sorgen zu machen, ohne verwenden:

protected void Page_Load(object sender, EventArgs e) 
{ 
    this.AttemptCount.Add("key", "value"); 
} 
1
Hashtable hastable_name=new Hashtable() 
Session["AttemptCount"]=hastable_name 
Verwandte Themen