2017-11-09 4 views
1

id 특성이없는 <label>이 있습니다. for 속성 만 있습니다. CodeBehind C#에서이 라벨의 가치를 얻을 수 있습니까?레이블에 id 특성이없는 경우 C# CodeBehind에서 레이블 값 가져 오기

이 응용 프로그램은 ASP.NET에서 작성되었습니다.

<label for="txtEmpCd">Department</label> 
<asp:DropDownList ID="DropDownList4" runat="server" CssClass="form-control"></asp:DropDownList> 
+1

'

+0

ASP 컨트롤을 사용하면 가장 잘 작동합니다. 그렇지 않으면 Codebehind는 runat = "server"가없는 레이블을 객체로 인식하지 않고 HTML 텍스트로만 인식합니다. – Laslos

+0

아니지만 우리는이 변화를 만들 수 있습니다,하지만 우리의 응용 프로그램이 너무 커서 ID가 매우 어렵습니다. – Lalji

답변

0

당신은 ID없이 <asp:Label>에 액세스 할 수있는 AssociatedControlID

<asp:Label ID="Label1" runat="server" Text="Department" AssociatedControlID="DropDownList4"></asp:Label> 
+0

클라이언트 ID를 인라인으로 사용하는 경우 CodeBehind C#에서 레이블 값을 어떻게 얻습니까? 너도 그걸 추가 할 수 있니? – Lalji

+0

두 번째 제안은'

+0

@Lalji ID 없이는 아무 것도 할 수 없습니다. – VDWWD

1

으로 Label를 사용하지만, 반복적으로 페이지의 컨트롤을 통해 검색이 필요합니다. Page 전달,

private void LoopThroughLabels(Control parent) 
{ 
    foreach (Control c in parent.Controls) 
    { 
     Label label = c as Label; 
     if (label != null) 
     { 
      if (label.AssociatedControlID == "txtEmpCd") 
      { 
       // This is your label 
      } 
     } 

     if (c.HasControls()) 
     { 
      LoopThroughLabels(c); 
     } 
    } 
} 

그리고 첫 번째 통화 :

<asp:Label AssociatedControlID="txtEmpCd" runat="server" />

당신은 같은 재귀 함수를 정의해야합니다 :이 형태로 라벨이 필요합니다

LoopThroughLabels(Page); 
0

runat = "server"가 없어도 코드 숨김에서 액세스 할 수 없습니다.

codebehind에서만 액세스 할 수있는 경우 전체 페이지에서 모든 HTML 리터럴을 읽고 속성이 "txtEmpCd"인 요소를 얻는 것은 매우 지루하고 올바르게 수행하는 방법이 아닙니다.

jQuery (클라이언트 측)에서 "txtEmpCd"라는 특성을 가진 레이블도 지루할 수 있습니다.

내 제안! 왜 당신의 레이블에 ID = "txtEmpCd"를 추가하지 않습니까?

관련 문제