2013-03-02 89 views
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

但應用此視圖狀態變量不起作用在此頁面上。

+0

你可以顯示一些代碼。你想要做什麼...... – 2013-03-02 07:14:46

+0

它不是一個頁面上它的每個頁面上有問題的視圖狀態 – 2013-03-02 08:56:28

+0

enableviewstate = false正是它所說的話,它禁用視圖狀態(除了某些控制狀態可以在整個頁面上都不會關閉)。它不能被個別對象或控件覆蓋。沒有對象能夠被保存到視圖狀態,這個設置爲false,並且大多數持久控制狀態將會丟失。錯誤信息本身是不言自明的,Kaerber已經對可能存在的問題以及如何解決這個問題給予了很好的描述。 – pwdst 2013-03-02 16:22:18

回答

0

在我的情況發生這個問題,因爲我是創造其影響控制位置值,因爲它是不能夠關閉渲染控制的標記控制。通過糾正控制標籤它已被糾正

1

原因可能是您在Page_Load中動態添加控件。即您在Page_Load中添加一些網格,並將其視圖狀態保存到頁面中,但是,當頁面回傳時,並且ViewState被解析時,引擎無法爲解析的ViewState找到相應的控件。

這是becase的Load事件(這是由的Page_Load處理)被頁面完全加載後解僱,即孩子們創作,視圖狀態分析和應用,但在此之前像點擊客戶端事件觸發並且呈現頁面。

將動態控件添加到Page_Init中,並確保它們每次創建時都完全相同,即在第一頁初始化和頁面初始化之後都在回發之後。

一個有用的鏈接ASP.NET Page Life Cycle