What is the best way to use the <label>
tag within an ASP.NET application? I want it to be XHTML valid, accessible and usable.
I understand the optimal way is this:
<label for="Username">Username:</label>
<input type="text" id="Username" runat="server" />
But if the above code is in an ASP.NET user control, the input ID will change, meaning the label's "for" attribute is useless. I could make the label tag a server control and set it's "for" attribute in the code (Username.ClientID) but it seems like a lot of work for such a simple thing.
I've also seen this HTML used in the past:
<label>
<span>Username</span>
<input type="text" id="Username" runat="server" />
</label>
What is the optimal approach?