ASP.NET 실행주기

ASP.NET 2010. 10. 4. 17:31

출처 동석이의 블로그 | 허둥사마
원문 http://blog.naver.com/tit99hds/120018010240

개요

페이지의 실행주기가 언뜻 아무것도 아닌것처럼 보이나 어떠한 복잡한 로직이 페이지에 구현될때

실행주기때문에 머리가 엉킨 경험을 한번씩은 경험 해 보았을 것이라고 생각합니다.

페이지의 실행주기를 한번만 확실히 집고 넘어가면 앞으로 개발하는데 많은 장점이 있을 듯 합니다.



<%@ Page Language="C#" Debug=true %>
<Script Language="C#" Runat="Server">
string s = "데이타 바인드 하기";
private void Page_Init(Object o , EventArgs e)
{
 Response.Write("Page_Init 이벤트 발생!<p>");
}
private void Page_Load(Object o , EventArgs e)
{
 Response.Write("Page_Load 이벤트 발생!<p>");
}
private void Page_PreRender(Object o , EventArgs e)
{
 Response.Write("Page_PreRender 이벤트 발생!<p>");
}
private void Page_Unload(Object o , EventArgs e)
{
 //페이지가 메모리에서 언로드 될때 발생, 아직 해제(disposed)되지는 않는다
 //응답을 사용할수 없다(Respnose개체 사용 불가)
 //화면에 출력하는 코드를 사용할 수 없다
}
private void Page_Disposed(Object o , EventArgs e)
{
 //페이지 생명주기 마지막 단계
 //페이지가 메모리에서 해제됨
}
private void DoClick(Object o , EventArgs e)
{
 Response.Write("클릭 이벤트 발생!(포스트 백 일어남)<p>");
 //Page.DataBind();
}
</Script>
<form runat="server">
 <asp:Button Runat="Server" OnClick="DoClick" Text="클릭!" /><p> <%# s %>
</form>

위의 코드는 페이지 실행주기동안에 발생하는 대부분의 이벤트입니다.

1. 페이지가 처음 로딩될 경우 [ init -> load -> PostBack체크 -> preRender 순으로 발생 ]


2. 포스트 백(버턴클릭시)이 될 경우 [ init -> load -> PostBack체크 -> 버턴클릭이벤트 -> PreRenader 순으로 발생 ]

주의 할 것은 포스트백이 일어날때 Page_Load 이벤트는 다시 호출되며 컨트롤의 
이벤트보다 먼저 수행된다는 점입니다. 
실수를 해보지 않은 사람은 다 아는 내용이지 않는냐 하겠지만 한번씩 실수를 해본 사람은 
이미 알고 있고 또한 기본적이지만 중요한 개념입니다. 
그리고 Page_PreRender 이벤트는 컨트롤의 이벤트 뒤에 또는 처음로딩시 호출되기에 
나름대로 유용하게 쓰일 수 있는 이벤트이기도 하죠. 
 
3.

private void Page_DataBind(Object o , EventArgs e)
{
    Response.Write("Page_DataBind 이벤트 발생<p>");
}
Page의 또다른 이벤트인 DataBind 입니다. 
이 놈은 페이지에서 DataBind 가 호출될때 발생하는 이벤트 입니다. ( ex> Page.DataBind(); ) 
이 외에도 실행주기에 대한 내용은 많지만 제가 아는 내용은 대략 이정도군요^^ 
 


페이지 요구시 처리과정

  1. init : 페이지 초기화
  2. ViewState복구
  3. Load : 일반적으로 알고 있는 Page_Load()
  4. PostBack 이벤트 처리
  5. PreRender
  6. ViewState 저장
  7. Render
  8. UnLoad : 페이지 객체 소멸 직전에 발생하는 이벤트


서버 컨트롤의 실행주기

  1. 컨트롤 생성
  2. Init
  3. ViewState 복구
  4. PostBack 데이터 처리
  5. Load
  6. 데이터 변경 이벤트
  7. PastBack 이벤트
  8. PreRenser
  9. ViewState 저장
  10. Render
  11. UnLoad
Posted by Sting!
,