2009-10-24 8 views
0

사용자 지정 컨트롤을 만들고 있습니다.OnInit 전에 다른 컨트롤이 구성되어 있는지 확인하는 방법

기본적으로 사용자 지정 컨트롤에서 OnPreInit 이벤트가 찾고 있습니다. 기본적으로 MyCustomControl 유형의로드 될 모든 컨트롤이 구성되었는지 여부를 알아야합니다.

기본적으로 생성되는 현재 인스턴스가 마지막인지 확인하기 위해 기본적으로 생성자에서 알아야합니다.

참고 : 내 사용자 정의 컨트롤에는 다른 컨트롤이 포함되어 있지만 (보장되지는 않지만) MyCustomControl 클래스의 컨트롤은 포함되어 있지 않습니다.

AddParsedObject를 재정의 (override)하려고 생각했습니다. 하지만 내 사용자 지정 컨트롤의 인스턴스에 컨트롤이 포함되어 있지 않은 경우이 여전히 호출됩니다?

+0

... 왜 물어야합니까? –

+0

좋아, 나는 webparts에 대한 대체 통신 수업을 만들고 있습니다. Webpart 클래스의 UserControl에서 파생되는 대신 내 클래스에서 파생됩니다. 음, 전체적인 의도는보다 강력한 방법으로 Page_Load 이전에 웹 파트 간 통신을 할 수 있다는 것입니다. 또한 Page_Init에서 선호합니다. 따라서 인스턴스에 "AllWebPartsInitialized"이벤트를 추가하여 인스턴스가 다른 웹 파트에 의존하는 것이 안전하다는 것을 알 수 있습니다. – Earlz

답변

2

불행히도 당신이 설명하는 접근법은 "사소한" . 즉, 기술적으로 불가능한 것은 아니지만 올바르게 수행하기가 어렵고 너무 많은 단점/단점이있어 다른 설계에서 더 큰 문제를 분석하고 분석하는 것이 좋습니다. 아마 당신이 달성하고자하는 최종 목표를 분명하게 다시 게시한다면, 우리는 당신이 실행 가능한 접근법을 찾도록 도울 수 있습니다.

0

나는 카운터를 사용하는 것을 싫어하지만, 테스트를하기 전에 컨트롤의 생성자에서 할 수있는 전용 클래스 (또는 컨텍스트)를 통해 상태 정보를 전달해야하는지, 당신이 필요로하는만큼 많이 얻었거나 Page.Controls와 .Controls를 통해 반복적 인 산책을 할 수 있고 각각을 유형별로 테스트 할 수 있습니다.

+0

음, Page.OnPreInit에 연결하려고했습니다. 그러나 페이지는 사용자 정의 컨트롤의 생성자에서 null로 설정됩니다. 그렇지 않으면 재귀 적 보행을 수행하면 잘 작동합니다. – Earlz

관련 문제