if a control is nested within another control (like ascx, gridview rows, formview items repeater items, master pages.
asp.net appends the names of parent controls to the child control. As Otis stated, this ensures unique ids on the client, which is required.
so if you have a simple WebForm1.aspx
<asp:Label id="MyLabel" />
<asp:TextBox id="MyTextBox" />
the server ids will match the client ids
however if you have a WebControl.ascx
<asp:Label id="MyLabel" />
<asp:TextBox id="MyTextBox" />
and you place this on WebForm1.aspx
<my:WebControl id="MyWebControl" />
your client ids will look something like this
MyWebControl_MyLabel
MyWebControl_MyTextBox
if you have a gridview on the webform
<asp:GridView id="MyGridView">
<Columns>
<asp:TemplateField>
<asp:Label id="MyLabel" />
</asp:TemplateField>
</Columns>
</asp:GridView>
the id for the label would look like this
MyGridView_ctrl0_MyLabel
MyGridView_ctrl1_MyLabel
MyGridView_ctrl[N]_MyLabel
where [N] is the row index.
this would allow you to place a web user control the the same page multiple times.