2017-11-09 6 views
1

Ich habe einen <label>, der kein id-Attribut hat. Es hat nur ein for Attribut. Kann ich den Wert dieses Labels in CodeBehind C# abrufen?Erhalte den Wert des Labels in C# CodeBehind, wenn das Label kein ID-Attribut hat

Diese Anwendung ist in ASP.NET erstellt.

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

Haben Sie versucht, '' statt '

+0

Ich stimme zu, mit dem ASP-Steuerelement würde am besten funktionieren - sonst erkennt das Codebehind das Etikett nicht als ein Objekt ohne runat = "server", sieht es einfach als HTML-Text. – Laslos

+0

Nein, aber wir können diese Änderung vornehmen, aber ID zu erstellen ist sehr schwierig, weil unsere Anwendung zu groß ist. – Lalji

Antwort

0

Verwenden Sie ein Label mit einem AssociatedControlID

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

Wenn ich Client-ID inline verwende, wie bekomme ich den Label-Wert in CodeBehind C# ?? Kannst du das bitte auch hinzufügen ?? – Lalji

+0

Der zweite Vorschlag beantwortet die Frage auch nicht wirklich, obwohl mit '

+0

@Lalji Ohne eine ID kann man nichts machen. – VDWWD

1

Sie eine <asp:Label> ohne ID zugreifen können, aber es wird rekursiv durch die Steuerelemente auf der Seite Benutzer erfordern. Dadurch wird das Etikett erfordern in Form zu sein:

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

Sie eine rekursive Funktion als solche definieren müssen:

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

Und für den ersten Aufruf, übergeben in der Page:

LoopThroughLabels(Page); 
0

Sie können von Codebehind ohne runat = "server" nicht zugreifen.

Wenn Sie nur von Codebehind zugreifen können, finden Sie alle HTML-Literale in der gesamten Seite lesen, erhalten Element mit Attribut ist "txtEmpCd", die sehr langwierig und nicht der richtige Weg ist, dies zu tun.

In jQuery (Client-Seite), können Sie Etikett finden, die für Attribut hat "txtEmpCd" auch langweilig.

Mein Vorschlag! Warum fügst du ID = "txtEmpCd" nicht zu deinem Label hinzu?

Verwandte Themen