2013-08-22 1 views
1

나는 FindControl을 사용하여 Login1의 LayoutTemplate에있는 확인란을 참조해야하는 이유에 대해 궁금해했습니다. 예 : 템플릿의 컨트롤을 부모를 통해 참조 할 수없는 이유는 무엇입니까?

var login1CheckBox1 = (CheckBox)Login1.FindControl("CheckBox1"); 
내가의 라인을 따라 뭔가 할 수 있기를 기대

: 체크 박스의 n 개의있을 수 있기 때문에 아래의 Repeater의 경우

var login1CheckBox1 = Login1.LayoutTemplate.CheckBox1; 

, 그것은, 분명하다 . 그러나 Login 컨트롤의 경우 이해가되지 않는 것 같습니다. 왜 이것이 다르게 구현되지 않겠습니까?

<asp:Login ID="Login1" runat="server"> 
    <LayoutTemplate> 
     <asp:CheckBox ID="CheckBox1" runat="server" /> 
    </LayoutTemplate> 
</asp:Login> 

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <asp:CheckBox ID="CheckBox1" runat="server" /> 
    </ItemTemplate> 
</asp:Repeater> 

아무에게도 빛을 발하는 사람이 있습니까?

답변

0

태그를 통해 페이지에 추가 된 컨트롤은 일반적으로 디자인 타임에 디자이너 부분 클래스에 정의됩니다.

템플릿에 추가 된 컨트롤은 일반적으로 컨트롤의 컨트롤 컬렉션에서 프로그래밍 방식으로 인스턴스화됩니다.

템플릿에 추가 된 컨트롤이 해당 컨트롤의 정의에서 컴파일 타임에 존재하지 않으므로 사용자가 원하는 구문을 달성하는 것이 다소 어려울 수 있습니다.

마크 업에서 페이지를 만들 때 우리는 IDE의 기능을 사용하여 부분 클래스를 생성합니다. 마크 업에서 템플릿을 정의 할 때 해당 컨트롤에 대해 ITemplate의 값을 설정하기 만하면됩니다.

관련 문제