2010-12-21 9 views
3

동적 컨트롤을 작성해야하는 경우, 대답은 다시 게시 다시 만드는 방법에 대해 거의 항상 질문이좋아, 정확하게 난 그냥 동적 컨트롤에 대한 두 가지 질문에서 활성화되었습니다

에 대한 올바른 장소입니다 입니다 여기

는 두 개의 SO 질문

question one

있습니다 우리는 항상 오에 의해 우리의 동적 제어 생성을

question 2

verriding CreateChildControls

반사경에서 많은 컨트롤을 살펴본 결과, 주로 telerik 컨트롤이 항상 올바른지 생각했지만 많은 사람들이 Init에서 만들어야한다고 말합니다.

은 ... 왜이 혼란의 이러한 영역 ..

답변

3

, 그들은 모두 같은 일을 수행. 조직을위한 컨트롤을 개발하고 있다면 init에 넣는 것이 좋습니다. (기술적으로 "있어야하는 곳"에도 불구하고 작동하지만 MS는 그들이 기대하는 방법을 만들었습니다 .

누군가가 사용할 컨트롤을 만드는 Telerik과 같은 사람이라면 나는 CreateChildControls 클래스에 넣을 것입니다. 왜 그런가? 사람들이 기대하는 것이기 때문에 MS가 제어하기를 원하는 것입니다. 개발자가해야 할 일 (특히 개발 한 컨트롤이 봉인되지 않은 경우)은 누군가가 다른 메소드를 재정의 할 수 있다는 것입니다. 많은 사람들이 보았 듯이 init 클래스를 덮어 씁니다. 코드가 원하는대로 작동하도록하십시오. 코드가 신비하게 작동하지 않는 상황을 항상 피하고자합니다. 기본 메소드를 호출하는 것을 잊었으며 문서화되지 않았습니다. CreateChildControls 메서드에 넣으면 다른 개발자에게 무엇을 말하고있는 것입니까? "여기에 컨트롤을 작성하면 뭔가를하고 싶을 것입니다." 클래스를 재정의하면 항상 메소드의 기본 클래스를 생각할 것입니다.

CreateChildControls에 넣는 것에 대한 또 다른 좋은 점은 많은 사람들이 아마 그것에 대해 알지 못한다는 것입니다 (그리고 사람들은 무엇을 위해 사용되는지 알고 있습니다). 따라서 Init으로 컨트롤과 원숭이를 상속하고 Init 메서드를 호출하는 것을 잊어 버리면 코드가 여전히 "마술처럼"작동하고 잘못된 내용을 파악할 필요가 없습니다.

+1

또한 인증 된 컨트롤이 있으면 EnsureChildControls에서 컨트롤 어댑터를 호출합니다. 희망이 될 수도 있고 그렇지 않을 수도 있습니다. –

+0

좋은 지적 Richard. 추가 해줘서 고마워. – kemiller2002

0

이 페이지를 즐겨 찾기가 보인다 난을 CreateChildControls를 계속해야하거나 올바른 방법을 초기화한다!

ASP.NET 페이지 수명주기 개요 사실 http://msdn.microsoft.com/en-us/library/ms178472.aspx

+1

은 모순적입니다. http://msdn.microsoft.com/en-us/library/system.web.ui.control.createchildcontrols.aspx –