사용자 지정 ASP.net 서버 컨트롤에 대해 생성 된 HTML 코드는 id 특성 대신 자식 컨트롤의 name 특성을 생성합니다. 이 같은 것 :고유 'ID'특성 대신 ASP.net 하위 컨트롤에 대해 HTML 'name'특성이 생성되었습니다.
<span id="GridView2_ctl02_editdis">
<input type="text" name="GridView2$ctl02$editdis$ctl00"/>
</span>
사용자 지정 컨트롤 자체의 ID가 분명히 적절합니다.
내게 낯선 사람은 ID가 생성된다는 것입니다. 가끔 (어떤 조건에서 나는 잘 모름). 그러나 해당 ID가 FindControl()
인 경우 서버 측에서 null을 반환합니다. name 속성의 값이 FindControl()
인 경우 잘 작동합니다. 이 같은
뭔가 : 위의 경우
<span class="TextBox" id="GridView2_ctl02_editdis">
<input type="text" id="GridView2_ctl02_editdis_ctl00" name="GridView2$ctl02$editdis$ctl00"/>
</span>
, 잘 작동 FindControl("GridView2$ctl02$editdis$ctl00")
, FindControl("GridView2_ctl02_editdis_ctl00")
하지 않습니다.
어떻게 일관되고 예측 가능한 ID를 보장합니까?
흠. ASP.net 페이지에서 올바른 컨트롤로 포커스를 복원하려면 HTML ID (REQUEST [ "__ LASTFOCUS"]에서)를 사용하고있었습니다. 저는 이제 한 ID에서 다른 ID 로의 직접적인 변환이 없다는 것을 알고 있습니다. '_'을 '$'로 바꾸면 .net 버전간에 이식 가능합니까? – sandesh247
실수가 아니라면 모든 .NET 버전은 HTML ID에 "_"을 사용하고 내부적으로 HTML 이름과 ID에 "$"를 사용합니다. – Ruslan