2014-02-18 2 views
0

Предположим, что на странице ASP.NET .aspx у меня есть метод Page Load и еще один метод для события нажатия кнопки.Сеанс ASP.NET и жизненный цикл страницы

В методе Page Load я проверяю, зарегистрирован ли пользователь, проверив сеанс. Является ли он или нет, я сохраняю результат в глобальной переменной.

Boolean isGuest = false; 

protected void Page_Load(object sender, EventArgs e) { 

     if(Session["id"]==null) 
       isGuest = true; 
     else 
       isGuest = false; 
} 

Давайте скажем, 20 минут прошло, и я не знаю, если сессия была прекращена или нет, а затем я нажимаю кнопку, событие выглядит следующим образом:

protected void Button_Click(object sender, EventArgs e) { 
      if(isGuest==false) 
       //do something 
      else 
       // do another thing 
} 

Мой вопрос is: Когда я нажимаю кнопку, ASP.NET снова проходит метод Page_Load (еще раз проверьте isGuest) или просто выполняет то, что находится внутри метода Button_Click, означает, что он использует Boolean isGuest, который может быть false, но в действительности сеанс прекращается, значит он должен быть true.

+2

Почему бы просто не проверить его? – RononDex

+0

@RononDex Это проверено и работает, но я просто хочу убедиться, что ничего не получилось. –

ответ

4

Page_Load инициировано всегда до контрольных мероприятий.

Посмотрите: ASP.NET Page Life Cycle Overview

Побочное примечание: Если вы хотите сделать что-то только при первой загрузке, а не на каждом постбэка вы должны проверить IsPostBack собственности.

-3

Вы можете:

  1. Определите свой собственный класс с UserID и другими свойствами профиля;
  2. Добавим, что класс сессии в global.asax сессии началось событие Session["NameReferingToYourClass"] = new YourClass();
  3. Установить переменную-член к объекту сеанса в начале жизненного цикла страницы mYourClass = Session["NameReferingToYourClass"] литым, если вам нужно;
  4. Затем вы можете внести любые изменения в свой класс в любом месте кода, в котором доступна ваша переменная-член;
  5. Сохраните свой класс со всеми изменениями в сеансе на Page.Unload(..){ Session["NameReferingToYourClass"] = mYourClass.

Таким образом, вы используете свои свойства класса в коде, в том числе UserId, в значительной степени, как окна приложения, не будет никакого упоминания сессии нигде в своем коде.

+0

Это кажется совершенно не связанным с тем, что задает вопрос. –

Смежные вопросы