title: Container id structure on controls added to placeholder in repeater
body: <p>Just ran across a weird thing.  We have a page with items rendered in a Repeater.  The items in the list have one panel for display and a PlaceHolder for edit mode where controls are added in the item data binding.</p>
  
  <p>We have some client side code working with the fields that got added, and the code was expecting the ids to follow the same container structure you usually see, but for some reason, one level is getting skipped and I don't know why.</p>
  
  <p>With the template below, you'd have the outer panel with an id like ...Repeater_ctl46_ctl100_Display.  The PlaceHolder itself doesn't render, nor get included in the id structure in the html, but the id of a HiddenField added to the EditPlaceHolder ends up like ...Repeater_ctl46_ctl100_valueHidden.</p>
  
  <p>The _Display level just doesn't appear.  This threw off our client side script because it was expecting the outer panel container to be reflected in all the child controls in the edit template, and it was using that to look them up.</p>
  
  <p>Anyone know why the containing Panel wouldn't be in the id hierarchy?</p>
  
  <pre><code>&lt;ItemTemplate&gt;
  ...
      &lt;asp:Panel ID="Display" runat="server"&gt;
          &lt;asp:Panel ID="ViewPanel" runat="server"&gt;&lt;asp:Label ID="ValueLabel" runat="server" /&gt;&lt;/asp:Panel&gt;
          &lt;asp:PlaceHolder ID="EditPlaceHolder" runat="server" /&gt;
      &lt;/asp:Panel&gt;
      &lt;asp:Panel ID="ModButtons" runat="server"&gt;&lt;asp:LinkButton ID="EditButton" Text="&lt;%$ Resources:Messages,Edit %&gt;" runat="server" /&gt;&lt;/asp:Panel&gt;
  ...
  &lt;/ItemTemplate&gt;
  </code></pre>