当页面包含视图状态变量时,无法加载视图状态

时间:2013-03-02 07:00:01

标签: c# asp.net

当我在包含viewstate的页面上使用或处理几分钟并重新加载页面时出现此错误:

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.

我通过设置页面设​​置 enableviewstate = false

来获得解决方案

但在应用此之后,viewstate变量在此页面上不起作用。

2 个答案:

答案 0 :(得分:1)

原因可能是您在Page_Load中动态添加控件。即在Page_Load中添加一些网格,并将其视图状态保存到页面中,但是当页面被回发并解析ViewState时,引擎无法找到已解析的ViewState的相应控件。

这就是因为Load事件(由Page_Load处理)在页面完全加载后触发,即创建了子项,查看状态已解析并应用,但在客户端事件之前,如单击触发和页面渲染。

将动态控件添加到Page_Init,并确保每次创建时它们完全相同,即在回发后的第一页初始化和初始化页面初始化。

有用的链接ASP.NET Page Life Cycle

答案 1 :(得分:0)

在我的情况下发生此问题是因为我正在创建影响控件位置值的控件,因为它无法关闭呈现该控件的标记。通过纠正控制标签,它已得到纠正