web-dev-qa-db-ja.com

ASP.NETで<label>タグを使用する方法は?

ASP.NETアプリケーション内で<label>タグを使用するにはどうすればよいですか?私はそれを有効で、アクセスしやすく、使いやすくしたいのです。

最適なHTMLの方法は次のとおりです。

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

ただし、上記のコードがASP.Netユーザーコントロールにある場合、入力IDが変更されます。つまり、ラベルの「for」属性は役に立たなくなります。ラベルタグをサーバーコントロールにし、コードの「for」属性を設定することもできます(Username.ClientID)が、このような単純なことには多くの作業が必要と思われます。

また、過去にこのHTMLが使用されているのを見ました。

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

適切なアプローチは何ですか?

48
Alex York

これには<asp:Label ... AssociatedControlID="Username" ...>コントロールを使用します。それらは<label>タグとしてレンダリングされ、for属性を適切に設定します。

必要に応じて、ラベルコントロール内に他のタグをネストすることもできます。

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

次のように書くこともできます。

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

Phil Haackには、このトピックに関する ブログ投稿 があります。

17

使用 <asp:Label>サーバーコントロール。関連するコントロールIDを設定するために使用できるプロパティがあります。

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

一番簡単な方法はこれだと思います。

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

.NET 4を使用している場合、ClientIDModeプロパティを使用して、静的または予測可能なIDを使用する1つ以上のコントロールを構成できるようになりました。 ClientIDModeプロパティは、TextBoxで直接設定することも、親コントロールまたは収容ページで設定することもできます。

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

ClientIDModeの詳細については、 [〜#〜] msdn [〜#〜] を参照してください。

3

ラベルが必要であるが、AssociatedControlIDで使用する別のコントロールがない場合は、ラベル自体を使用できます。

<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

あなたもこれを試してみてください:

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

これは、ラベルをドラッグアンドドロップした場合にVisual Studioまたは他のソフトウェアが提供するものです。

0
magn