title: ViewState overwrites changes on dynamically added UserControl (in Placeholder) on PostBack
body: <p>In my ASP.NET application - having ViewState enabled - I can reset inputs by simply setting them again. Here is a basic simple sample that works: </p>
  
  <p><strong>_TEST.aspx</strong></p>
  
  <pre><code>&lt;asp:ScriptManager runat="server" /&gt;        
  &lt;asp:DropDownList ID="ddl" runat="server" DataSource='&lt;%# new string[] { "A", "B", "C" } %&gt;' /&gt;
  &lt;asp:Button ID="b" runat="server" UseSubmitBehavior="false" OnClick="b_Click" Text="Test 1" /&gt;
  </code></pre>
  
  <p><strong>_TEST.aspx.cs</strong></p>
  
  <pre><code>protected void Page_Load(object sender, EventArgs e)
  {
    this.DataBind();
    this.ddl.SelectedValue = "B";
  }
  
  protected void b_Click(object sender, EventArgs e)
  {
    Console.WriteLine("Updated");
  }
  </code></pre>
  
  <p>In this example <code>ddl</code> will be bound with "A", "B" and "C" on <code>Page_Load</code> and it will always select "B". So when you change the selection and submit, it will be reset. Imagine this is used to reset some controls on specific conditions. </p>
  
  <hr>
  
  <p>In my case I need this kind of behavior on a dynamically loaded <code>UserControl</code> that is added to a <code>Placeholder</code>. Because a <code>Placeholder</code> does not persist the content I need to recreate the controls on every postback. The <code>ViewState</code> seems to be okay with it. Here is a sample: </p>
  
  <p><strong>_TEST.aspx</strong></p>
  
  <pre><code>&lt;asp:ScriptManager runat="server" /&gt;
  &lt;asp:PlaceHolder ID="ph" runat="server" /&gt;
  </code></pre>
  
  <p><strong>_TEST.aspx.cs</strong></p>
  
  <pre><code>protected void Page_Load(object sender, EventArgs e)
  {
    _TESTUC uc = (_TESTUC)this.Page.LoadControl("~/Controls/_TESTUC.ascx");
    this.ph.Controls.Add(uc);
  }
  </code></pre>
  
  <p><strong>_TESTUC.ascx</strong></p>
  
  <pre><code>&lt;asp:DropDownList ID="ddl" runat="server" DataSource='&lt;%# new string[] { "A", "B", "C" } %&gt;' /&gt;
  &lt;asp:Button ID="b" runat="server" UseSubmitBehavior="false" OnClick="b_Click" Text="Test 2" /&gt;
  </code></pre>
  
  <p><strong>_TESTUC.ascx.cs</strong></p>
  
  <pre><code>protected void Page_Load(object sender, EventArgs e)
  {
    this.DataBind();
    this.ddl.SelectedValue = "B";
  }
  
  protected void b_Click(object sender, EventArgs e)
  {
    Console.WriteLine("Updated");
  }
  </code></pre>
  
  <p>Again, on every postback I want to reset the selection of the <code>DropDownList</code> for test purposes, but interestingly it remembers my selection. </p>
  
  <p>What can I do to fix this?</p>