Frage

Wie kann ich den <label> Tag innerhalb einer ASP.NET-Anwendung? Ich will es gültig ist, zugänglich sein und verwendet werden.

Ich verstehe die optimale HTML Art und Weise, ist dies:

<label for="Username">Username:</label>
<input type="text" id="Username" runat="server" />

Aber wenn der obige Code in einem Benutzersteuer ASP.NET ist, wird die Eingabe-ID ändern, das Label der Bedeutung „für“ Attribut ist nutzlos. Ich konnte den Label-Tag ein Server-Steuerelement machen und stellen Sie die „für“ Attribut in dem Code (Username.ClientID), aber es scheint wie eine Menge Arbeit für eine so einfache Sache.

Ich habe auch HTML in der Vergangenheit gesehen:

<label>
    <span>Username</span>
    <input type="text" id="Username" runat="server" />
</label>

Was ist der richtige Ansatz?

War es hilfreich?

Lösung

Ich verwende <asp:Label ... AssociatedControlID="Username" ...> Kontrollen für diese. Sie erhalten gemacht als <label> Tags und setzen das for Attribut angemessen.

Beachten Sie, dass Sie können auch Nest andere Tags innerhalb der Label-Steuerelement, wenn Sie möchten:

<asp:Label ID="UsernameLabel"
           Text="Username:"
           AssociatedControlID="UsernameTextBox"
           runat="server">
    <asp:TextBox ID="UsernameTextBox" runat="server" />
</asp:Label>

Andere Tipps

Sie können es auch so schreiben:

<label for="<%= Username.ClientID %>">Username:</label>
<asp:TextBox ID="Username" runat="server" />

Phil Haack hat eine Blog-Post auf diesem Thema

das <asp:Label> Server-Steuerelement verwenden. Es hat eine Eigenschaft, die Sie verwenden, können die zugehörigen Steuer ID einzustellen.

<asp:Label ID="label1" runat="server" Text="Username" AssociatedControlID="Text1" />
<asp:TextBox ID="Text1" runat="server" />

Ich denke, der einfachste Weg, es, dies zu tun ist.

<asp:Label AssociatedControlID="Username" runat="server" Text="Username:"></asp:Label>
<asp:TextBox ID="Username" runat="server"></asp:TextBox>

Wenn Sie mit .NET 4 Sie nun die ClientIDMode Eigenschaft verwenden, können ein oder mehrere Steuerelemente zu konfigurieren statische oder vorhersehbare IDs zu verwenden. Die ClientIDMode Eigenschaft kann direkt auf dem Text festgelegt werden, oder Sie es auf jedem übergeordneten Steuerelement oder die beinhaltende Seite einstellen können.

<label for="Username">Username:</label>
<asp:TextBox ID="Username" runat="server" ClientIDMode="Static" />

mehr über die ClientIDMode Lesen Sie auf MSDN

Wenn Sie ein Etikett, aber nicht über ein anderes Steuerelement in AssociatedControlID zu verwenden, um ein das Etikett verwenden kann selbst

<asp:Label ID="Not_Span" AssociatedControlID="Not_Span" Text="Will be rendered as label" />
<p><asp:Label ID="label1"           Text="Username:"           AssociatedControlID="txtUserName"           runat="server">    <asp:TextBox ID="txtUserName" runat="server" /></asp:Label></p>

Sie meint auch versuchen, und diese:

<asp:Label  ID="Label1" runat="server" Text="label"></asp:Label>

Dies ist, was Visual Studio, oder jede andere Software gibt Ihnen, wenn Sie ein Label ziehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top