해야 하 읽어 인터뷰 질문에 .NET 유명 기업

1. ASP.NET 서버 컨트롤의 수명주기의 목록을 실행합니다.

일반 서버 컨트롤의 라이프 사이클은 11 단계로 구성 :

///  <요약> 
/// 1. 초기화
 ///  </ 요약> 
///  <비고> 
/// 초기화 1. 주 제어가 완료되며, 그 하위 페이지가 순차적으로 대응하는 메소드를 호출하여 반복적으로 조절이 ProcessRequest 하는 OnInit 방법;
 /// 2. 페이지에 게시 ViewState에 저장된 값을 정확하게 제어로 복귀되도록 TrackViewState 메소드를 호출하여 트래킹 제어 뷰 상태를 연다.
///  </ 비고> 
보호  오버라이드가  무효 하는 OnInit (EventArgs입니다 E) 
{ 
    쓰기 ( " 1.하는 OnInit " )
     자료 .OnInit (E)을,
     다음은이 .Page.RegisterRequiresPostBack ( 다음은이 ); 
} 
///  <요약> 
// / 2로드 뷰
 ///  </ 요약> 
///  <비고> 
/// 페이지가 다시 전송 될 때의 위상은 실제로 뷰 상태로 데이터 페이지 제어 뷰 상태를로드 종료로 먼저 실행, 상기 메인 프로세스에 존재하지 만 수행된다
 / // 컨트롤이 뷰 상태, 클라이언트 요청 프로세스를 사용할 수 있는지 제공, 뷰 상태는 페이지 포스트 백 이벤트 포스트 백을 수행할지 여부를 다시 생각하기 위해 다시 서버에 숨겨진 필드에 저장됩니다.
///  </ 비고> 
보호  오버라이드가  무효 LoadViewState ( 객체 savedState) 
{ 
    쓰기 ( " 2. LoadViewState " )
     자료 .LoadViewState (savedState); 
} 
///  <요약> 
/// 3. 데이터 반환 처리를
 @ /  </ 요약> 
///  <PARAM NAME = "postDataKey"> 로드 페이지 제어 클라이언트 ID, 제출 </ PARAM> 
/// <매개 변수 이름 = "postCollection"> 클라이언트에 의해 전송 데이터가로드 </ PARAM> 
///  <비고> 
/// 페이지가 다시 전송된다 주제어 데이터 리턴 기능을 클라이언트에 따라 전송이 완료 될 때 위상 만 수행 새로운 값 RaisePostDataChangedEvent 방식 여부를 데이터 비교의 이전 값
 /// 클라이언트 및 수정 된 형태 데이터가 전송되고, 이격 된 형태 "및"되며, 검출 된 ID에 따른 제어가 구현되면, ID 데이터에 묶어 의 IPostBackDataHandler 인터페이스는 실현 경우
 /// 값의 기회를 새로 LoadPostData 메서드를 호출합니다.
///  </ 비고> 
공공  BOOL LoadPostData ( 문자열 postDataKey, postCollection NameValueCollection은) 
{ 
    쓰기 ( " 3. LoadPostData은 " );
     반환  ; 
} 
///  <요약> 
/// . 4.
 </ 요약> 
///  <비고> 
/// 첫 번째 페이지 및 제어 재귀를 Page_Load 이벤트에 onLoad 이벤트 주로 뷰 상태에 따라 제어 클라이언트 데이터를 감소 생성 및 초기화 제어를 완료하기 위해 실행,
 /// 종종 IsPostBack을 통해 올 페이지 요청을 분석하여 첫 번째 제어 또는 해당 코드 로직 처리 게시 이벤트이다.
///  </ 비고> 
보호  오버라이드가  무효 는, OnLoad (EventArgs입니다 E) 
{ 
    쓰기 ( " 4.의 OnLoad " )
     자료 .OnLoad (E)를; 
} 
///  <요약> 
/// 5. 반환 이벤트 알림
 // /  </ 요약> 
///  <비고> 
/// 페이지를 다시 배치 할 때이 단계는 본 방법 LoadPostData가 참일 때만 RaisePostDataChangedEvent가 호출되고, 또한 계면의 IPostBackDataHandler의 방법 만이 수행된다.
///  </ 비고>
공개  공극 RaisePostDataChangedEvent () 
{ 
    쓰기 ( " 5. 다음은 RaisePostDataChangedEvent ' ); 
} 
///  <요약> 
/// 제 취급 게시 이벤트
 ///  </ 요약> 
///  <비고> 
/// 이 단계 만 페이지가 주로 클라이언트 다시 게시 이벤트에 의해 발생, 다시 게시 될 때 실행, 성공적으로 클라이언트 다시 게시 이벤트를 캡처하여 서버 측에서 처리됩니다. 전제 조건은 IPostBackEventHandler 인터페이스 달성하는
 /// 트리거 제어 파라미터 eventArgument 포스트 백 사건에 따른 판단을 한 후 해당 이벤트 핸들러를 완료.
///  </ 비고> 
공개  공극 RaisePostBackEvent ( 문자열 eventArgument) 
{ 
    쓰기 ( " 제 RaisePostBackEvent ' ); 
} 
/// <요약> 
/// 제 미리 렌더링
 ///  </ 요약> 
///  <비고> 
/// 주제어 완료가 렌더링되기 전에 어떤 조작 적절한 자원과 같은 컨트롤을 등록하려면 자바 스크립트 및 제어 숨겨진 필드 등 .
///  </ 비고> 
보호  오버라이드가  무효화 OnPreRender (EventArgs입니다 E) 
{ 
    쓰기 ( " 7. 다음은 OnPreRender " )
     베이스 .OnPreRender (E)를; 
} 
///  <요약> 
/// 제 viewstate가 저장
 ///  </ 요약> 
///  <비고> 
/// LoadViewState의 대향 주 스토리지 페이지 뷰 상태 정보를 완료 페이지가 페이지 LoadViewState 포스트 백 경우 제 요청하고 만 실행될 때 실행될있다.
///  </ 비고>
 재정이  객체 SaveViewState () 
{ 
    쓰기 ( " 8. 다음은 SaveViewState " )
     자료 .SaveViewState를 ();
     반환  새 새 ) 쌍 (; 
} 
///  <요약> 
/// 9. 본
 ///  </ 요약> 
///  <비고> 
/// HTML의 형태로 서버 컨트롤의 출력 스트림에 제어 문자 및 텍스트 출력은 클라이언트에 렌더링. 컨트롤, 상기 방법은 출력 스트림 RenderControl 호출 할 수있다.
///  </ 비고> 
보호  오버라이드가  무효로 렌더링합니다 (지정된 HtmlTextWriter 작가를) 
{ 
    (writer.Write를 "< '! 중동을 클릭하여'INPUT 유형 = '버튼'이름 = '{0}'값 = 스타일 = '위치 : 절대; 왼쪽 : 20 픽셀; 최고 : 280px'는 onclick을 = \ "{1.} \"/> " ,
         다음은이 .UniqueID, Page.ClientScript.GetPostBackEventReference ( 이 본 , "" )); 
    쓰기 ( " 제 렌더링 " )
     베이스 .render (작성자) 
} 
///  <요약> 
/// 10 언로드
 ///  </ 요약이> 
///  <비고> 
/// 메인 페이지를 자원의 청소 및 제어를 완료하려면 페이지를 떠날 때 트리거거나 브라우저를 닫 동일시 할 수없는 경우, 때문에 페이지 뷰 상태를 의존하는 두 개의 요청이 지속적으로 나타나도록, 두 요청 사이에 비 상태입니다.
 ///  </ 비고>
보호  재정의  무효 
    쓰기 ( 도 OnUnload (EventArgs입니다 전자)
{" 10 다음은도 OnUnload " );
     자료 .OnUnload (E); 
} 
///  <요약> 
/// 11 릴리스
 ///  </ 요약> 
///  <비고> 
/// 데이터베이스 연결과 같은 일부 자원을 확보 IO 파일 또는 스트림입니다.
///  </ 비고> 
공공  재정의  무효 파기하는 () 
{ 
    쓰기 ( " 11. 다음은 폐기 " );
     자료 .Dispose를 (); 
} 
개인  무효 쓰기 ( 문자열 텍스트) 
{ 
    HttpContext.Current.Response.Write (텍스트 + " < BR /> "); 
}

참고 : 컨테이너 서버 컨트롤의 형식으로 페이지가 더 세련 수명주기 단계가 있습니다. 이러한 각 제어, 유일한 초기화 이벤트 및 설정하고 템플릿 페이지를 수정하는 데 사용되는 페이지 제어 및 속성 PreInit의 주제는 더 이상 한 번 초기화 단계에서, 초기화, InitComplete 세 단계, 일반적으로 PreInit 단계에 대해서는 변화는, 초기화 단계가 차례로 각 자식 컨트롤을 초기화하고 명명 컨테이너를 설정 초기화 이벤트를 호출하고, 컨트롤을 가능하게 할 것이다 InitComplete 단계는 뷰 상태 추적 기능이 있습니다.

디자인 모델 및 ASP.NET 서버 컨트롤의 동작 모드의 차이에 대해. 간단히.

디자인 패턴은, 개발자들이 신속하게 컨트롤의 속성과 동작을 설정하는 제어의 효과를 보여주는 시간에 볼 수 있도록 개발자를 위해 설계되어 있지만, 특정 디자인 모드 수명주기 관리의 경우에 같은 OnPreRender, 부하로 (실행되지 않습니다 을 CreateChildControls 등), 환경 변수 실행 모드의 맥락에서만 존재하지 않지만, 초기화는 RenderContents를 구축 렌더링, 폐기 및 기타 이벤트가 디자인 모드에서 실행됩니다. 파일 경로가 바람직하지 않을 때 IDE 디자인 상태에서, 일부 리소스 파일 (자바 스크립트 / CSS / 사진)를 소개하는 OnPreRender 이벤트로, 현재 작동 모드에서 가상 서버 경로를 취득해야합니다. 서버 컨트롤의 페이지 PageLoad 이벤트의 컨텍스트에 인용 된 또 다른 예는,도 예외 오류 "정보를 얻을 수 없습니다"보고합니다.

3. 서버 ID 간단한 제어 및 클라이언트 ID가 UniqueID 차이.

ID는 우리가 ID라는 고유하게 식별하는 ID,에서 UniqueID와 된 ClientID하여 각 서버 컨트롤로서,가 UniqueID 서버의 ID가, 된 ClientID는 일반적으로하지 자식 컨트롤로 또는 MasterPage, 아래에 제어, 클라이언트 ID이다 세 this.UniqueID 제어하는 ​​INamingContainer 인터페이스가 상속 경우가 UniqueID 된 ClientID 및 부모 제어를 각각 분리 다른 ID를 추가 할 것이다 (그리고 $ _)를 식별하고, 정확하게 동일하다.

HTTPS : //www.cnblogs.com/hmiinyu/p/3586065.html 재현

추천

출처blog.csdn.net/weixin_34148340/article/details/93901814