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を設定することで解決策が得られました

ただし、これを適用した後、ビューステート変数はこのページでは機能しません。

4

2 に答える 2

1

原因として、Page_Load にコントロールを動的に追加したことが考えられます。つまり、Page_Load にグリッドを追加すると、そのビュー ステートがページに保存されますが、ページがポスト バックされ、ViewState が解析されると、エンジンは解析された ViewState のそれぞれのコントロールを見つけることができません。

これは、Load イベント (Page_Load によって処理される) が、ページが完全に読み込まれた(つまり、子が作成され、ビュー ステートが解析および適用された後) に発生するためですが、クリックなどのクライアント イベントが発生し、ページがレンダリングされる前です。

動的コントロールの追加を Page_Init に移動し、それらが作成されるたびに、つまり、最初のページの初期化とポストバック後のページの初期化の両方でまったく同じであることを確認します。

役立つリンクASP.NET ページのライフ サイクル

于 2013-03-02T07:28:12.740 に答える