In my last post ViewState and Dynamic Control, I mentioned that ViewStateModeByIdAttribute can be used to change the default behavior of how ASP.NET finds the controls when ViewState data restored. Now, let's have a look how it can be done. For now, let's forget about ViewStateModeByIdAttribute for a second, and just have a simple page as following: Default.aspx <body> <form id="form1" runat="server"> <asp:Panel ID="pnlMain" runat="Server"> </asp:Panel> </form> </body> ......
I thought I understand ViewState, until I came cross this exception: Failed to load viewstate. The control tree into which viewstate is being loaded must match the control tree that was used to save viewstate during the previous request. For example, when adding controls dynamically, the controls added during a post-back must match the type and position of the controls added during the initial request. This is a question asked by someone on a .NET mailing list. My first guess of what causing the ......