4

当我在几分钟内不使用或处理包含视图状态的页面并重新加载页面时,出现此错误:

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 变量在这个页面上不起作用。

4

2 回答 2

1

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

这是因为 Load 事件(由 Page_Load 处理)在页面完全加载后触发,即创建子项、解析和应用视图状态,但在点击触发和呈现页面等客户端事件之前。

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

一个有用的链接ASP.NET 页面生命周期

于 2013-03-02T07:28:12.740 回答
0

在我的情况下,发生此问题是因为我正在创建影响控件位置值的控件,因为它无法关闭渲染该控件的标签。通过更正控制标签,它被更正了

于 2013-09-13T06:21:05.350 回答