我有一个有趣的观点问题,我在熨衣服时遇到了麻烦。当然,我不是处理视图状态的专家,它可能是关于.NEt最令人困惑的事情之一,但是这里既不存在也不存在。这是我得到的错误。
无法加载视图状态。加载viewstate的控制树必须与上一个请求期间用于保存viewstate的控制树匹配。
这有点奇怪,它只发生在网站的主页上(代码位于母版页面的页脚)。网站上的每个其他页面都可以正常工作。这是aspx代码。请注意,这是在主文件的页脚中。
<asp:UpdatePanel ID="upEmail" runat="server" >
<ContentTemplate>
<asp:MultiView ID="mview" runat="Server" ActiveViewIndex="0">
<asp:View ID="viewInput" runat="Server">
<div>
<asp:Panel ID="pnlEmail" runat="server" DefaultButton="btnSubscribe" Width="100%" EnableViewState="False">
<asp:TextBox ID="tbEmail" runat="server" Width="125px" CssClass="someClass" title="Enter Your Email Address" />
<ajaxToolkit:TextBoxWatermarkExtender ID="TextBoxWatermarkExtender1" TargetControlID="tbEmail" WatermarkText="Email Address" runat="server" />
<asp:RequiredFieldValidator ID="rfEmail" runat="Server" ControlToValidate="tbEmail" ValidationGroup="submit">*</asp:RequiredFieldValidator>
<asp:ImageButton ID="btnSubscribe" ImageUrl="/Images/social/signup.gif" Imagealign="absmiddle" runat="server" OnClick="BtnSubscribe_Clicked" ValidationGroup="submit" />
<br />
<asp:RegularExpressionValidator ID="regEmail" runat="server" ControlToValidate="tbEmail" ErrorMessage="Please enter a valid email." ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ValidationGroup="submit" Display="dynamic" ForeColor="" CssClass="error_font_no_hover" />
</asp:Panel>
</div>
<div>
<asp:Label ID="lblMessage" runat="server" Visible="false" />
</div>
</asp:View>
<asp:View ID="viewSuccess" runat="server">
Thank You! You will now
<br />
receive e-mails!
</asp:View>
</asp:MultiView>
</ContentTemplate>
</asp:UpdatePanel>
我已尝试在面板上禁用viewstate,但仍会出现错误。谁能告诉我发生了什么事?
提前谢谢
答案 0 :(得分:2)
您很可能对控制树有误解。作为参考,我推荐Scott Guthrie的建议:
答案 1 :(得分:1)
您是否在主页中动态创建任何控件?此错误可能是因为您在初始加载后面的代码中动态创建控件但在回发中不会发生。如果您有任何动态创建的控件,请确保在OnInit方法中执行此操作,