2014-02-18 6 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 
} 

내 질문 버튼을 클릭하면 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에 세션에서 세션에 클래스를 추가 필요하면 주조 페이지 수명주기 mYourClass = Session["NameReferingToYourClass"] 초기 세션 객체에 멤버 변수를 설정 이벤트 Session["NameReferingToYourClass"] = new YourClass();
  3. 을 시작했다;
  4. 그런 다음 멤버 변수가 사용 가능한 코드 어디에서나 클래스를 변경할 수 있습니다.
  5. Page.Unload(..){ Session["NameReferingToYourClass"] = mYourClass에 모든 변경 사항을 세션에 다시 저장하십시오.

당신이 꽤 많이 Windows 응용 프로그램처럼 UserId 포함하여 코드에서 클래스 속성을 사용하는이 방법, 코드에서 다른 곳 세션에는 대한 언급이 없습니다.

+0

이것은 질문에서 묻는 것과 전혀 관련이없는 것으로 보입니다. –