Asp.NET 페이지 이벤트가 로드되는 순서는 무엇입니까?

巴扎黑
풀어 주다: 2017-08-06 09:38:37
원래의
1749명이 탐색했습니다.

이 기사에서는 주로 Asp.NET 페이지의 이벤트 로딩 순서를 소개합니다. 이 기사에서는 지침을 따르는 모든 사람을 위한 특정 참조 및 학습 가치가 있습니다. 아래에서 함께 배워봅시다.

이 기사에서는 주로 Asp.NET 페이지 이벤트의 로딩 순서에 대한 관련 콘텐츠를 소개하고 참조 및 학습을 위해 공유합니다. 더 이상 고민하지 말고 자세한 소개를 살펴보겠습니다.

ASP. 레이아웃 페이지 및 콘텐츠 페이지의 NET Mother 이벤트

우리는 마스터 페이지와 콘텐츠 페이지 모두 컨트롤에 대한 이벤트 처리기를 포함할 수 있다는 것을 알고 있습니다. 컨트롤의 경우 콘텐츠 페이지의 컨트롤은 콘텐츠 페이지에서 이벤트를 발생시키고, 마스터 페이지의 컨트롤은 마스터 페이지에서 이벤트를 발생시킵니다. 컨트롤 이벤트는 콘텐츠 페이지에서 마스터 페이지로 전송되지 않으며 마스터 페이지 컨트롤의 이벤트는 콘텐츠 페이지에서 처리할 수 없으며 자체 이벤트 내에서만 처리됩니다.

다음은 마스터 페이지(Master)와 콘텐츠 페이지(ContentPage)가 병합된 후의 이벤트 순서입니다.


Master页面控件 Init 事件。
ContentPage页面控件 Init 事件。
Master页  Init 事件。
ContentPage页 Init 事件。
ContentPage页 Load 事件。
Master页  Load 事件。
ContentPage页面控件 Load 事件。
ContentPage页面 PreRender 事件。
Master页面  PreRender 事件。
Master页面控件 PreRender 事件。
ContentPage页面控件 PreRender 事件。
로그인 후 복사

마스터 페이지와 콘텐츠 페이지의 이벤트 순서는 페이지에 중요하지 않습니다. 개발자. 그러나 특정 이벤트의 가용성에 따라 달라지는 이벤트 처리기를 만드는 경우 마스터 페이지와 콘텐츠 페이지의 이벤트 순서를 이해하는 것이 도움이 됩니다.

Asp.Net

1. 단일 페이지가 실행되면 이벤트는 다음 순서로 활성화됩니다.


Page.PreInit
Page.Init
Page.InitComplite
Page.PreLoad
Page.Load
Page.LoadComplete
Page.PreRender
Page.PreRenderComplete
로그인 후 복사

2. BasePage:System.Web.UI.Page 등의 페이지에서 BasePage에 로그인 여부, 권한 유무 등 확인 기능이 추가되었으며, 다른 페이지는 BasePage에서 상속받으면 BasePage와 최종 페이지의 이벤트 활성화 순서는 다음과 같습니다. :


BasePage.PreInit
Page.PreInit
BasePage.Init
Page.Init
BasePage.InitComplite
Page.InitComplite
BasePage.PreLoad
Page.PreLoad
BasePage.Load
Page.Load
BasePage.LoadComplete
Page.LoadComplete
BasePage.PreRender
Page.PreRender
BasePage.PreRenderComplete
Page.PreRenderComplete
로그인 후 복사

3. MasterPage를 사용하면 MasterPage의 이벤트와 ContentPage의 이벤트가 다음 순서로 활성화됩니다.


ContentPage.PreInit
Master.Init
ContentPage.Init
ContentPage.InitComplite
ContentPage.PreLoad
ContentPage.Load
Master.Load
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender
ContentPage.PreRenderComplete
로그인 후 복사

Master에는 PreInit 이벤트가 없다는 점에 유의하세요. .

4. ContentPage가 BasePage를 상속하는 경우 각 이벤트의 실행 순서는 다음과 같습니다.


BasePage.PreInit
ContentPage.PreInit
Master.Init
BasePage.Init
ContentPage.Init
BasePage.InitComplite
ContentPage.InitComplite
BasePage.PreLoad
ContentPage.PreLoad
BasePage.Load
ContentPage.Load
Master.Load
BasePage.LoadComplete
ContentPage.LoadComplete
BasePage.PreRender
ContentPage.PreRender
Master.PreRender
BasePage.PreRenderComplete
ContentPage.PreRenderComplete
로그인 후 복사

기억하세요: 상속된 페이지를 먼저 로드한 다음 상속된 페이지에 상속이 있으면 자체적으로 로드하세요. 먼저 상속 페이지에 대한 상속을 로드하세요.

이벤트 핸들러 이름 발생 시간
Page_Init Web Form의 뷰 상태에 서버 컨트롤을 로드하고 초기화합니다. 이는 양식 수명 주기의 첫 번째 단계입니다.
Page_Load 는 페이지 개체에 서버 컨트롤을 로드합니다. 이때 뷰 상태 정보를 확인할 수 있으므로 여기서 코드를 사용하여 공간 설정을 변경하거나 페이지에 텍스트를 표시할 수 있습니다.
Page_PreRender 응용 프로그램이 페이지를 렌더링하려고 합니다

Page_Unload

페이지가 메모리에서 언로드되었습니다

Page_Error

처리되지 않은 예외가 발생했습니다

Page_AbortTransaction

트랜잭션이 종료됨

Page_CommitTransaction

트랜잭션 허용됨

Page_DataBinding

Page_CommitTransaction 서버 공간과 데이터 소스가 함께 번들로 제공됩니다.

Page_Disposed

페이지 개체가 메모리에서 해제됩니다. 이것은 페이지 개체의 수명 주기 중 마지막 이벤트입니다

Init, Load, PreRender 이벤트 실행 순서:

1) 컨트롤의 Init 이벤트

2) 컨트롤이 위치한 페이지의 Init 이벤트

3) 컨트롤이 위치한 페이지의 이벤트 로드

4) 컨트롤 로드 이벤트

5) 컨트롤이 위치한 페이지의 PreRender 이벤트

6) 컨트롤의 PreRender 이벤트

개인 연구에서 얻은 경험: (다음 두 가지 점은 다음과 같습니다. 자체 제작 페이지를 구축하고 관련 이벤트를 다시 작성하여 확인)

1. Init 이벤트는 가장 안쪽 컨트롤(예: 사용자 컨트롤)에서 가장 바깥쪽 컨트롤(페이지)로 발생하며 Load 및 PreRender와 같은 기타 이벤트도 발생합니다. 가장 바깥쪽 컨트롤에서 가장 안쪽 컨트롤로 올라갑니다.

2. 컨트롤 간 동일한 이벤트의 실행 순서는 페이지에서 컨트롤의 위치에 따라 왼쪽에서 오른쪽, 위에서 아래입니다.

참고:

1. 사용자 컨트롤도 페이지의 컨트롤로 간주됩니다.

2. 사용자 컨트롤을 별도의 특수 페이지로 봅니다. 동일한 규칙을 준수하십시오.

3. 클라이언트 프로그램(JavaScript 등)에서 클라이언트 Body 객체의 onload 이벤트를 사용하는 경우, 이 클라이언트 이벤트는 마지막에 실행된다는 점, 즉 서버 측의 모든 이벤트가 완료된 후에 실행된다는 점에 유의하시기 바랍니다. 처형되었습니다.

4. Master 및 사용자 정의 컨트롤에는 PreInit 및 OnComplete 이벤트가 없습니다. Master 자체는 사용자 컨트롤 usercontrol이고, usercontrol은 TemplateControl을 상속하며, TemplateControl은 Control에서 다시 쓸 수 있는 이벤트를 살펴보겠습니다. ) , 공식 문서(https://referencesource.microsoft.com/#System.Web/UI/Control.cs,87dbac93d9749fa2)를 볼 수도 있습니다.


위 내용은 Asp.NET 페이지 이벤트가 로드되는 순서는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!