2009-10-02 1 views
0

내 코드에서이 작업을 수행하여, 내 ASP 코드를 C#으로 정의 컨트롤을 추가하려고 :TargetControlID가 유효하지 않습니다 /를 asp.net 코드에서 폼에 컨트롤을 추가

<% this.Controls.Add(blah.GetControl()); %> 

하지만 오류가 발생합니다 : 'a8f08c40d0fab104ca20b1460ee1cbdd1e121'의 TargetControlID가 유효하지 않습니다. 값은 null 또는 비워 둘 수 없습니다.

내가 get 메서드에서 임의로 생성하는 GUID를 제어합니다.

이유에 대한 설명은 무엇입니까? 내가 뭘 허용하고 - 그 코드를 내 aspx 파일에 퍼팅?

편집 : 새로운 ID 문제에 대한 추가 코드 : blah.GetControl에서

. 
. 
    <div id="divDetailsContent" style="width:100%"> 
. 
. 
<% this.Controls.Add(blah.GetControl("divDetailsContent")); %> 
. 
. 
public static blah GetControl(n) 
{ 
. 
. 
blah.TargetID = n; 
. 
. 
} 

답변

1

()는 ID 'a8f08c40d0fab104ca20b1460ee1cbdd1e121'와 컨트롤을 인스턴스화된다. 이 컨트롤은 예를 들어 Accordion 컨트롤과 같은 TargetControlID 속성이있는 형식입니다. 따라서이 TargetControlID를 GetControl에서도 컨트롤의 유효한 ID로 설정해야합니다. ID와 TargetontrolID를 모두 설정하십시오.

업데이트 : ClientID 속성으로 ID를 가져올 수 있습니다. 여기에는 HTML에서 렌더링되는 전체 ID가 포함됩니다.

+0

감사합니다. 100 % 정확합니다. 내가 지금 가지고있는 문제는 내 대상 컨트롤이 ID가있는 div이고 div의 실제 ID가 코드에서 설정 한 것이 아니기 때문에 div의 ID를 넣는 것이 작동하지 않는다는 것이지만 "ct100 $ MyDivName ". 내가 타겟으로 div를 어떻게 사용할 수 있는지 아십니까? 동적으로 컨트롤을 생성하기 전에 대상이 div이고 제대로 작동했습니다. – NibblyPig

+0

나는 어떻게 ... 잘 모르겠다 div id를 입력하면 점이 나옴은 asp 컨트롤이 아니기 때문에 intellisense를 생성하지 않는다. – NibblyPig

+0

내 div에서 runat = server가 누락되었습니다. 'aab822f2d0cace04'의 TargetControlID가 유효하지 않습니다. ID가 'ctl00_MainContentPlaceHolder_divDetailsContent'인 컨트롤을 찾을 수 없습니다. ClientID가 작동하지 않는 것 같습니다. – NibblyPig

관련 문제