2017-03-14 21 views
1

li 태그의 id가 주어진 경우 코드 뒤에 li 태그에 css 클래스를 추가하고 싶습니다.C#에서 문자열로 HtmlGenericControl을 얻는 방법

<li id="liOne" runat="server" class=""></li> 

여기 내 C# 코드입니다 : 나는 위의 방법을 시도

System.Web.UI.HtmlControls.HtmlGenericControl ctrl = Page.FindControl("liOne") as System.Web.UI.HtmlControls.HtmlGenericControl; 
if(ctrl!=null) 
    ctrl.Attributes["class"] += " active"; 

하지만 null를 돌려줍니다. li 태그를 얻기 위해 모든 페이지 컨트롤을 반복하지 않아도되는 메서드가 있습니까? 감사.

답변

1

컨트롤 li 당신은 ul의 자식이되므로 페이지의 최상위 레벨에 있지 않아도됩니다. FindControl은 최상위 레벨에서 찾습니다. liOne의 직계 부모에게 FindControl으로 전화해야합니다.

이미 id에 li이 있고 이미 runat="server" 속성 세트이므로과 직접 액세스 할 수 있어야합니다.

Page.FindControl

FindControl 메서드

liOne.Attributes["class"] += " active"; 

누구의 ID 디자인시 사용할 수있는 액세스 제어하는데 사용될 수있다. 이 메서드는 페이지의 즉치 또는 최상위 컨테이너 만 검색합니다. 페이지에 포함 된 명명 컨테이너에서 컨트롤을 재귀 적으로 검색하지 않습니다. 하위 명명 컨테이너의 컨트롤에 액세스하려면 해당 컨테이너의 FindControl 메서드를 호출하십시오. 의견을 바탕으로

편집 많은 리 당신은 LI1, LI2, LI3 같은 일부 서열을 가지는 ID를 할당하고 부모를 통해 그들을 평가할 수

제어가있다.

for(int i=1; i < 4; i++) 
{ 
    System.Web.UI.HtmlControls.HtmlGenericControl ctrl = ul1.FindControl("li" + i) as System.Web.UI.HtmlControls.HtmlGenericControl; 
    //Do what you want with ctrl 
} 
+0

ul 태그에 여러 개의 li 컨트롤이 있으므로 직접 액세스하는 대신 동적으로 확인하고 싶습니다. 감사합니다. –

+0

답변을 주셔서 감사합니다. 특정 li 컨트롤을 코드 뒤에 찾을 수 있도록 ul runat 서버를 만들었습니다. –

+0

당신은 환영합니다. – Adil