관리 메뉴


Kinesis´s Open Document

ASP.NET C# - System.Web.UI.Page 내 On 이벤트 처리와 관련한 메모 본문

MEMO/기술 자료/C# Language

ASP.NET C# - System.Web.UI.Page 내 On 이벤트 처리와 관련한 메모

Kinesis 2012. 10. 12. 15:50

System.Web.UI.Page 내 On 이벤트 처리와 관련한 메모

 

ASP.NET 으로 웹 서비스를 만들다 보면 System.Web.UI.Page 에 정의되어 있는 일부 이벤트를 override 하여 사용하게 된다.

 

이 중 자주 쓰이게 되는 요소로 OnPreInit, OnInit, OnInitComplete, OnPreLoad, OnLoad, OnLoadComplete 등과 같은 이벤트를 재정의 하여 사용하게 되는데 특히 라이브러리를 이용해서 상속 받는 요소를 System.Web.UI.Page 로 바로 받지 않고 클래스 라이브러리에 정의한 녀석을 받는 경우에 대해서 기록해둔다.

 

환경

Kinesis 라는 새로운 클래스 라이브러리 프로젝트를 생성한다.

iPage 라는 public 형 class 를 만들어 On 처리 이벤트를 override 한다.

Kinesis 라는 클래스 라이브러리를 컴파일 하고 웹 서비스 bin 폴더에 넣는다.

웹 페이지(aspx)를 만들고 cs 페이지에서 System.Web.UI.Page 를 Kinesis.iPage 와 같이 작성한 것으로 변경한다.

필요에 따른 On 처리 이벤트를 override 한다.

 

이 경우 override 된 On 처리 이벤트는 단수가 아닌 복수가 된된다. 설명을 쉽게 하기위해 파일 구성을 Default.aspx(.cs) 와 iPage.cs 2개로 가정했을때 호출되는 순서는 Default.aspx.cs 에서 override 한 On 처리이벤트가 우선 호출된다. 즉 Default.aspx.cs 에 있는 override 된 OnLoad 가 호출이되고 해당 함수 내에서 base.OnLoad(e); 구문이 있을 경우에 iPage.cs 에서 override 된 OnLoad 가 호출된다는 이야기이다.

 

요 소 : (컴파일된 dll) OnLoad in iPage.cs , (IIS 내 Page) OnLoad in Default.aspx.cs

 

조 건 : 호출된 페이지 안에 (예: Default.aspx.cs) override 된 OnLoad() 함수가 있는가?

 예  : OnLoad() 호출 in Default.aspx.cs

아니요 : OnLoad() 호출 in iPage.cs

 

조 건 : OnLoad() 함수 내에 base.OnLoad(e); 구문이 존재하는가?

 예  : call OnLoad() in iPage.cs

아니오 : return;

 

결 론

 

조 건 : iPage.cs 에서 정의한 OnLoad 처리 이벤트가 호출이 되어야만 하는가?

 예  - 조 건 : 해당 OnLoad 처리 이벤트가 호출된 페이지 내에 override 되어 있는가?

     예  : base.OnLoad(e); 구문의 추가를 통해서 iPage 에 정의된 OnLoad를 호출한다.

        (처리순서에 따라 처음단이나 마지막 단에 배치하도록 한다)

    아니오 : OnLoad 이벤트를 override 하지 않는다.

아니오 : 필요에 따라 처리

 


Comments