Archive for November, 2009
Setting a labels "for" attribute inside a repeater
Posted on November 15th, 2009 • Filed under asp.net • 1 Comment
It’s nice to add <labels> to your form fields and set the labels “for” attribute so that it references the field it is a label for.
e.g.
<label for="emailaddress">Email</label> <input type="text" id="emailaddress"/>
Now if you’re referencing asp.net controls you can use the clientid property.
e.g.
<label for="<%= emailaddress.clientid()%>">Email</label> <asp:TextBox runat="server" ID="emailaddress" />
All nice an easy so far. The situation gets a little bit more complicated when you start nesting this inside a repeater.
e.g.
<asp:Repeater runat="server" ID="rpt1"> <itemTemplate> <label for="<%= emailaddress.clientid()%>">Email</label> <asp:TextBox runat="server" ID="emailaddress" /> </itemTemplate> </asp:Repeater>
this won’t work.
Here’s what you need to do instead.
<asp:Repeater runat="server" ID="rpt1">
<itemTemplate>
<label for="<%# container.findcontrol("emailaddress").clientid()%>">Email</label>
<asp:TextBox runat="server" ID="emailaddress" />
</itemTemplate>
</asp:Repeater>