2013-05-17 2 views
1

오늘 많이 봤는데 내 문제에 도움이되는 답변을 찾지 못했습니다. 내가 CustomControl2 생성 할 때마다 생각 중첩 된 사용자 정의 웹 컨트롤의 ID

protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 

     for (int i= 0; i < 2; i++) 
     { 
      Panel pn = new Panel(); 

      Controls.Add(pn); 

      CustomControl2 ct2= new CustomControl2(); 
      ct2.ID = "CustomControl2"; 

      pn.Controls.Add(rowControl); 
     } 
    } 

,이 {parentId}로 ID 부여됩니다 + :

나는 다른 웹 사용자 정의 컨트롤 (CustomControl2) 다음을 호출하는 웹 사용자 지정 컨트롤 (CustomControl1)가 "CustomControl2"하지만 그게 아니기 때문에 "ID가있는 여러 컨트롤 CustomControl2가 발견되었습니다." 내가 CustomControl2 고유 ID를 만들 수 있지만 내가 이해하지 못하는 이유는 ID가 부모 ID와 함께 포함되지 않은 이유입니다.

의견을 보내 주셔서 감사합니다.

+3

클라이언트 쪽 ID와 서버 쪽 ID를 혼동하지 마십시오. 클라이언트에서는 ID가 결합되지만 서버 측에서는 여전히 고유해야합니다. –

+0

주제에 대해 엄마가 무엇을 말해야하는지 봅시다. 솔루션에 대한 아래 예를 참조하십시오. – hdougie

답변

0

웹 컨트롤에서 INamingContainer "마커"인터페이스를 구현하는 것만으로도이 작업을 직접 수행해야했습니다. 이렇게하면 .net이 컨트롤의 각 인스턴스에 대한 ID 네임 스페이스를 생성합니다. 즉, 모든 자식 컨트롤에는 필요에 따라 부모 컨트롤의 ID가 접두사로 사용됩니다.

관련 문제