【发布时间】:2017-04-13 21:51:30
【问题描述】:
default2.aspx
<%@ Page Language="C#" AutoEventWireup="true" Theme="Blue" %>
<%@ Register TagPrefix="uc1" TagName="favicon" Src="~/FavIcon.ascx" %>
<!DOCTYPE html>
<script runat="server">
private void Page_PreRender(object sender, System.EventArgs e)
{
HtmlGenericControl scriptControl = new HtmlGenericControl("script");
Page.Header.Controls.AddAt(0, scriptControl);//If this line is commented out, no exception will occur.
}
private void Page_Init(object sender, System.EventArgs e)
{
ScriptManager oSM = new ScriptManager();
Page.Form.Controls.Add(oSM);//If this line is commented out, no exception will occur.
}
</script>
<html>
<head runat="server">
<title></title>
<uc1:favicon runat="server"></uc1:favicon>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>
</html>
FavIcon.ascx
<%@ Control Language="C#" ClassName="FavIcon" AutoEventWireup="true" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
this.Visible = false;//If this line is commented out, no exception will occur.
}
</script>
还将样式表添加到蓝色主题。
页面打开成功,但是一旦我点击按钮,它就会抛出异常
加载视图状态失败。视图状态所在的控制树 正在加载的必须与用于保存的控制树匹配 上一个请求期间的视图状态。例如,当添加 动态控制,回发期间添加的控件必须匹配 在初始阶段添加的控件的类型和位置 请求。
谁能解释为什么会发生这个错误?
【问题讨论】:
-
这是当您将视图状态(默认启用)与动态控件(controls.Addxxx)结合时遇到的经典错误:blogs.msdn.microsoft.com/asiatech/2011/10/25/…(theme=blue 动态添加控件,Visible=true 添加信息到视图状态等)。
-
@SimonMourier 只有当这三个因素存在时才会发生错误。你能解释一下为什么当我删除三个因素中的任何一个时错误不会发生吗?