2009-01-29 133 views
42

在ASP.NET應用程序中使用<label>標籤的最佳方式是什麼?我希望它是XHTML有效,可訪問和可用的。Html標籤標籤和ASP.NET

我瞭解的最佳方式是這樣的:

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

但是,如果上面的代碼是在ASP.NET用戶控件,輸入ID將會改變,這意味着標籤的「爲」屬性是沒用的。我可以將標籤標記爲服務器控件,並將其設置爲代碼中的「for」屬性(Username.ClientID),但對於如此簡單的事情來說,它似乎有很多工作要做。

我也看到了這個HTML過去使用:

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

什麼是最佳方法?

回答

61

我使用<asp:Label ... AssociatedControlID="Username" ...>控制這個。它們被渲染爲<label>標記並適當地設置for屬性。

注意,您可以在Label控件中嵌套其它標籤,如果你想:

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

我也使用這種方法,但始終爲標籤標籤設置EnableViewState =「False」,特別是如果它是實質形式。在我看來,視角越小越好。 查看http://stackoverflow.com/questions/113479/when-to-enable-disable-viewstate – 2009-01-29 23:02:08

8

使用<asp:Label>服務器控件。它有一個屬性,您可以使用它來設置關聯的控件ID。

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

我想最簡單的方法就是這樣。

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

編輯:哇..所有相同的答案在一分鐘內。 =)

0
<p><asp:Label ID="label1"   Text="Username:"   AssociatedControlID="txtUserName"   runat="server"> <asp:TextBox ID="txtUserName" runat="server" /></asp:Label></p> 
16

你也可以寫這樣的:

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

菲爾哈克對這個話題blog post

3

如果您使用的是.NET 4,你現在可以使用ClientIDMode屬性配置一個或多個控件以使用靜態或可預測的ID。 ClientIDMode屬性可以直接在TextBox上設置,也可以在任何父級控件或包含頁面上設置。

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

瞭解更多有關的ClientIDMode上MSDN

3

如果你想有一個標籤,但沒有其他控制01​​一個使用可以使用標籤本身

0

你我也試試這個:

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

這是什麼Visual Stud io或任何其他軟件都會在您拖放標籤時提供給您。