Где я должен объявить переменную сеанса в asp.net
Я строю Asp.net применение. Мне нужно сохранить хэш-таблицу в сеансе.
При загрузке страницы я пишу
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Session["AttemptCount"]=new Hashtable(); //Because of this line.
}
}
Здесь проблема в том, что когда пользователь обновляет страницу, сессия["AttemptCount"] также обновляется. Я хочу знать, где я должен объявить
Session["AttemptCount"]=new Hashtable();
Чтобы мое видение не было перепутано.
EDIT In Global.asax, эта сессия начнется, как только пользователь откроет веб-сайт. Я хочу создать эту сессию только в том случае, если пользователь перейдет к конкретная страница. то есть логин.aspx
5 ответов:
Сделайте это в методе
Session_Start
в вашем глобальном.asax Вот так...protected void Session_Start(object sender, EventArgs e) { Session["AttemptCount"]=new Hashtable(); }
Обновление:
Затем просто сделайте проверку, чтобы увидеть, существует ли переменная сеанса, если она не существует, только тогда создайте переменную. Вы можете вставить его в собственность, чтобы сделать вещи чище, как это...
public Hashtable AttemptCount { get { if (Session["AttemptCount"] == null) Session["AttemptCount"]=new Hashtable(); return Session["AttemptCount"]; } }
А затем вы можете просто позвонить в СВОЙСТВО
AttemptCount
, где вам это нужно...public void doEvent(object sender, EventArgs e) { AttemptCount.Add("Key1", "Value1"); }
Вы можете создать на своей странице такое свойство:
protected Hashtable AttemptCount { get { if (Session["AttemptCount"] == null) Session["AttemptCount"] = new Hashtable(); return Session["AttemptCount"] as Hashtable; } }
Тогда вы можете использовать его без необходимости беспокоиться:
protected void Page_Load(object sender, EventArgs e) { this.AttemptCount.Add("key", "value"); }
Проверить, существует ли он первым
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if(Session["AttemptCount"] == null) { Session["AttemptCount"]=new Hashtable(); //Because of this line. } } }
Хотя session_start лучше, вам нужно использовать его только на одной странице, но вы можете создать его для каждого сеанса.