it-swarm.com.de

HTML-Label-Tag und ASP.NET

Was ist der beste Weg, um das <label>-Tag in einer ASP.NET-Anwendung zu verwenden? Ich möchte, dass es XHTML-gültig, zugänglich und nutzbar ist.

Ich verstehe den optimalen Weg so:

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

Wenn sich der obige Code jedoch in einem ASP.Net-Benutzersteuerelement befindet, ändert sich die Eingabe-ID. Das "for" -Attribut der Beschriftung ist also unbrauchbar. Ich könnte das Label-Tag zu einem Serversteuerelement machen und es im Attribut (Username.ClientID) als "for" -Attribut festlegen, aber es scheint viel Arbeit für so eine einfache Sache zu sein.

Ich habe auch diesen HTML-Code in der Vergangenheit gesehen:

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

Was ist der optimale Ansatz?

45
Alex York

Ich benutze dafür <asp:Label ... AssociatedControlID="Username" ...> Steuerelemente. Sie werden als <label>-Tags gerendert und setzen das for-Attribut entsprechend.

Beachten Sie, dass Sie auch andere Tags innerhalb des Label-Steuerelements verschachteln können, wenn Sie möchten:

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

Sie können es auch so schreiben:

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

Phil Haack hat einen Blogbeitrag zu diesem Thema

18

verwenden Sie das Serversteuerelement <asp:Label>. Es verfügt über eine Eigenschaft, mit der Sie die zugehörige Steuerelement-ID festlegen können.

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

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

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

EDIT: Wow ... alle gleichen Antworten innerhalb einer Minute. =)

7
Brian Kim

Wenn Sie .NET 4 verwenden, können Sie jetzt die Eigenschaft ClientIDMode verwenden, um ein oder mehrere Steuerelemente für die Verwendung statischer oder vorhersagbarer IDs zu konfigurieren. Die ClientIDMode-Eigenschaft kann direkt in der TextBox festgelegt werden, oder Sie können sie für jedes übergeordnete Steuerelement oder die enthaltende Seite festlegen.

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

Weitere Informationen zum ClientIDMode finden Sie unter MSDN

3

Wenn Sie ein Label wünschen, aber kein anderes Steuerelement in AssociatedControlID verwenden möchten, können Sie das Label selbst verwenden

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

Du meinst es auch und das hier:

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

Dies ist, was Visual Studio oder andere Software Ihnen bietet, wenn Sie ein Etikett ziehen und ablegen. 

0
magn