ASP.NET 웹 컨트롤을 연장 할 때 어떤 이벤트에서 추가 웹 컨트롤을 주입해야합니까?

StackOverflow https://stackoverflow.com/questions/296609

  •  08-07-2019
  •  | 
  •  

문제

기존 제어를 확장하여 복합 제어 또는 사용 및 ASCX를 피하려고 노력하고 있습니다. 그러나 나는 상속 된 컨트롤에 컨트롤을 추가하고 뷰 상태/사후 무결성을 유지하는 데 어려움을 겪고 있습니다. 사전 렌더 중에 컨트롤을 추가 할 때마다 컨트롤이 나타나지만 후 백은 뷰 스테이트 예외를 던집니다. 나는 그것들을 거기에 그리고 loadviewstate에 추가하려고 시도했다 (물론 그것은 바보 같은 일이었다). 내가 확장하는 컨트롤에서는 초기를 사용할 수 없습니다.

예외는 sys.webforms.pagerequestmanagerservererRorexception : viewsstate를로드하지 못했습니다. ViewState가로드되는 제어 트리는 이전 요청 중에 ViewState를 저장하는 데 사용 된 제어 트리와 일치해야합니다. 예를 들어, 컨트롤을 동적으로 추가 할 때, 사후 기간 동안 추가 된 컨트롤은 초기 요청 중에 추가 된 컨트롤의 유형 및 위치와 일치해야합니다.

도움이 되었습니까?

해결책

실제로 Microsoft는 당신이 그것을 무시해야한다고 말합니다 CreateChildControls 방법.

컨트롤을 추가하기 전이나 후에 기본 클래스 방법을 호출 할 수 있습니다. 컨벤션이 있는지 확실하지 않습니다.

protected override void CreateChildControls(){
  Controls.Add(someControl);
  base.CreateChildControls();
}

도움이되기를 바랍니다!

다른 팁

Oninit 또는 CreateChildControls에 추가해야합니다. 어쨌든 ViewState와 문제가되지 않으려면 읽으십시오. 이 위대한 기사. 아마도, 샘플 "4. 아동 통제 초기화 프로그래밍 방식으로"라는 것이 당신의 경우입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top