web-dev-qa-db-ja.com

ビューステートを読み込めませんでした。ビューステートがロードされているコントロールツリー

UserControl内でホストされているASP.NETフォームでHTTP POSTの後に次のエラーメッセージが表示されます。

ビューステートを読み込めませんでした。ビューステートがロードされているコントロールツリーは、前のリクエスト中にビューステートを保存するために使用されたコントロールツリーと一致する必要があります。たとえば、コントロールを動的に追加する場合、ポストバック中に追加されるコントロールは、最初のリクエスト中に追加されるコントロールのタイプと位置と一致する必要があります。

追加情報は次のとおりです。

  • .NET 4.5 RCを実行しています
  • これはUmbraco 4.7ベースのWebサイトです
  • 私のローカル開発マシンでは、フォームは機能します完全に
  • このエラーは、.NET 4.5(のみ)、MSSQL 2012 Express、IIS 7.5、Windows 7)がインストールされているステージングサーバーでのみ発生します(私は知っています。 ..)
  • サーバーはWebファームの一部ではありません(または、庭園は無関係です)
  • ユーザーコントロールdoesコントロールを動的にレンダリング

最新のサービスパックをすべて適用しました。アイデアが足りなくなった!私もそれを再起動し、サーバーで歌や特別なダンスを含むリッチを実行しましたが、役に立ちませんでした。

14
krisdyson

さて、答えは文字通り、「最後のものと同じソフトウェアをすべて備えた新しいサーバーをセットアップし、再試行する」であり、それは現在動作しています。

1
krisdyson

コントロールを動的に追加するときに重要なのは、どのイベントに追加するかです。

ロード後に発生するイベントにコントロールを追加した場合、それらはクライアントに送信するビューステートの一部になります。

LoadViewStateが呼び出される前に、これらのコントロールを再度追加する必要があります。

追加するコントロールの決定自体がViewStateまたはコントロールの値に格納されている場合に遭遇した場合、ViewStateがロードされる前であっても、このデータはRequest.Params

asp.netページのライフサイクルを参照してください

Page life cycle

22
nunespascal

追加したばかりですEnableViewState="false"に私のページのプレースホルダーとその消えました。 uでも機能することを願っています。

21
Hooman

このエラーは主にビュー状態の変更中に発生します:フォームテンプレート、リストビュー、詳細ビュー、グリッドビューなどのコントロールで、アイテムテンプレート、アイテムテンプレートの編集の場合と同様に、あるテンプレートから他のテンプレートにASP = .net(すべてのフレームワーク);

コントロール状態からの変更中にItem Template ---> Edit Template以下が変更されます

1)コントロールが変更されます(IDと状態)

2)ポジションが変更されます。

ビューの変換中にポストバックが発生すると、次のようなエラーが発生します

ビューステートを読み込めませんでした。ビューステートがロードされているコントロールツリー...

(button、link_button_Image_buttonイベントなどの)データバインディングに個別のコントロールを使用している場合、このエラーが報告されます!

このエラーを回避するには>>> メソッド内で1つのテンプレートから別のテンプレートに状態が変化したら、データソースバインディングを呼び出します(クリック中またはポストバッキングイベント中には呼び出さないでください)

4

Idと同じ値の「name」属性を追加すると、この問題はなくなります。

<input type="button" id="extractBomInfoBtn" name="extractBomInfoBtn" value="Extract" class="button   textonly" />
0
David

私の場合、問題を引き起こしていたページの読み込み時にasp:Literal。Textプロパティを操作していました。他のすべてのケースでは、これによってビューステートエラーが発生することはありませんでしたが、この特定のケースでは、。Text値をhtml要素に変更していました。

次のエラーが発生しました:

<asp:Literal ID="SvgIcon" runat="server" />

SvgIcon.Text = "<svg version=\"1.1\" id=\"Layer_1\" bla bla />"

コントロールに明示的にEnableViewState = "false"を追加することでエラーを解決できました:

<asp:Literal ID="SvgIcon" runat="server" EnableViewState="false" />
0
Versatile

ページロードイベントに直接コントロールのバインディングメソッドがあるかどうかを確認します。これにより、この問題が発生する可能性があります。

0
SubqueryCrunch

同じ問題がありました。この問題はクライアント側にありましたが、私のローカルシステムでは発生しませんでした。グーグルで何時間も過ごした後、すべての動的コントロールを含むaspxページのテーブルタグにEnableViewState = "false"を書き込み、その後すべてのビューステート変数を削除し、代わりにaspxページにいくつかの非表示のテキストボックスを作成してDB値を受け入れましたコードビハインドでそれらを使用し、コード全体で使用しました。その後、私の問題は解決しました。しかし、それでも、何が問題なのかを理解できませんでした。

0
user6785638

ユーザーコントロールごとに新しいPlaceHolderを追加できます。

OR

enableviewstate=falseコントロール上、ビューステートが必要ない場合

0
Omid Farvid

これは、コントロールでSaveViewStateをオーバーライドし、LoadViewStateをオーバーライドしない場合に発生する可能性があります。

0
kͩeͣmͮpͥ ͩ

私の場合、(OnPageIndexChanging)イベントのグリッドビューがあり、ページをクリックしても、2回クリックするまで何も起こりません!

新しいページインデックスを設定する前に、データソースを更新していました。


これは私が間違っていたものです

grd.DataSource = data;
grd.DataBind();
grd.PageIndex = e.NewPageIndex;

これは正しい方法です

grd.PageIndex = e.NewPageIndex;
grd.DataSource = data;
grd.DataBind();
0
iYazee6