2017-11-09 18 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

2番目の提案は本当に '

+0

@Lalji IDなしでは何もできません。 – VDWWD

1

Labelを使用してください。これは、フォームにあるようにラベルが必要になります:

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

次のような再帰関数を定義する必要があります。

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); 
     } 
    } 
} 

そして、最初の呼び出しのために、Pageに渡します

LoopThroughLabels(Page); 
0

runat = "server"を使用せずにcodebehindからアクセスすることはできません。

コードビハインドからしかアクセスできない場合は、ページ全体ですべてのHTMLリテラルを読み込み、属性が「txtEmpCd」である要素を取得することが非常に面倒で正しい方法ではありません。

jQuery(クライアント側)では、属性が「txtEmpCd」であるラベルも面倒です。

私の提案!なぜあなたのラベルにID = "txtEmpCd"を追加しないのですか?

関連する問題