2010-02-26 8 views
6

Buduję aplikację Asp.net. Muszę zapisać HashTable w sesji.Gdzie powinienem zadeklarować zmienną sesji w asp.net

Na stronie obciążenia piszę

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

Tutaj problemem jest, gdy użytkownik odśwież stronę, sesji [ „AttemptCount”] również uzyskać odświeżone. Chcę wiedzieć, gdzie należy Oświadczam

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

Więc moja seesion nie dostać refeshed.

EDYCJA W Global.asax sesja rozpocznie się, gdy tylko użytkownik otworzy witrynę. Chcę utworzyć tę sesję tylko wtedy, gdy użytkownik przejdzie na konkretną stronę. tj. Login.aspx

Odpowiedz

14

Zrób to w metodzie Session_Start w swojej Global.asax jak tak ...

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

Aktualizacja:

Następnie wystarczy po prostu zrobić sprawdzić, czy zmienna sesja istnieje, jeśli nie robi Dopiero wtedy utwórz zmienną. Można trzymać je w nieruchomości, aby rzeczy jak odkurzacz tak ...

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

I wtedy można po prostu zadzwonić na posesji AttemptCount gdzie trzeba jak tak ...

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

W Global.asax ta sesja dostanie rozpoczęło się, gdy tylko użytkownik otworzy stronę internetową. Chcę utworzyć tę sesję tylko wtedy, gdy użytkownik przejdzie na konkretną stronę. tj. Login.aspx –

+0

Zaktualizowałem swoją odpowiedź, musisz po prostu sprawdzić, czy istnieje, sprawdzając pod null. –

+0

Co przechowujesz w hashtable? Czy to liczba prób logowania użytkownika? –

0

Spójrz na Global.asax i Application_Started (myślę) i jest też jeden do sesji również.

2

testu jeśli istnieje jednak najpierw choć session_start jest lepszy, wystarczy użyć go na jednej stronie, ale można go utworzyć dla każdej sesji.

3

Można zrobić właściwość takiego na swojej stronie:

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

wtedy można go używać bez obaw:

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