2010-01-25 2 views
2

페이지에서 여러 번 반복되는 컨트롤이 있습니다. 각 사건마다 내가 정의 할 고유 한 ID를 갖고 싶습니다 (끔찍한 ID asp.net이 붙는 것이 아닙니다). 문제는 런타임에만 ID를 알 수 있다는 것입니다.ASP.Net 3.5 : 컨트롤의 HTML ID 지정

<uc8:MyControl ID="<%=THEID%>" runat="server" /> 

을하지만 나는 그것이 작동하지 않습니다 알고

나는 다음과 같은 기록 할 .ASPX에 싶습니다. 이것에 접근하는 올바른 방법은 무엇입니까?

고맙습니다.

답변

1

당신은 코드를 추가 할 수 있습니다 :

MyControl control = new MyControl(); 
control.ID == "myControl" + count.ToString(); 
ph.Controls.Add(control); 

곳 산도 - 자리 표시 자 또는 패널 제어, 계산 - 일부 카운터.

0

코드에서 컨트롤을 추가하고 패널을 추가 한 다음 컨트롤을 추가하는 것이 좋습니다.

0

슬프게도 ASP.NET 3.5에서는 현재 .NET ID가 남아 있습니다. 런타임에 프로그래밍 방식으로 컨트롤을 추가하려는 경우가 아니면 클라이언트에 표시되는 ID 만 읽을 수 있습니다. 적절한 컨트롤을 찾으려면 종종 클라이언트 측 트릭을 수행해야합니다.

양식을 508 준수하려면 .NET에서 중첩 된 컨트롤에 ID를 부여하고 예측하려고하는 패턴을 분석해야했습니다. 작년에 으로 나타났습니다. 손가락을 건드리지. 또는, 당신은 런타임에 ClientID 속성을 얻을 수과 같이, 숨겨진 필드에 기록 : <input id='SpecialControlID' type='hidden' value='<%= SpecialControl.ClientID %>'>

은 다음 당신은 자바 스크립트의 ID를 확인할 수 있습니다. 간단히 말해서, 좋은 방법이 없으며, 성가신 해킹 방법 만 있습니다. 런타임에 컨트롤을 추가하는 것이 가장 쉽습니다.

희망 사항은 VS2010과 함께 제공됩니다. 개선을위한 옵션이 있습니다. 컨트롤의 설정을 변경하여 지정된 ID를 사용하거나 .NET에서 ID를 확인하기 위해 알고리즘을 단순화하여 예측 가능성을 높일 수 있습니다. 여기에 good link이 있습니다.

관련 문제