5

ポストバック (つまり、クリック イベントが発生したとき) にいくつかのコントロールを動的にロードし、それらをプレースホルダーに追加する aspx ページがあります。クリックされた内容に応じて、異なるコントロール セットをロードする必要があります。
これは初めて完全に機能しますが、プレースホルダーのコントロールをクリアして別のコントロール セットを動的にロードしようとすると、次のエラーが表示されます:前回のリクエストでビューステートを保存するために使用されたものです。」

これは、ViewState.Clear() を実行しても発生します。

これを行う方法はありますか?

4

2 に答える 2

6

Yuriy Solodkyy がここで詳しく説明しています: Dynamically Created Controls in ASP.NET

于 2008-12-05T12:17:59.000 に答える
-1

コントロールを動的に作成するときは、作成するすべてのコントロールに一意の ID があることを確認する必要があります。

ここで起こっていることは、Control1、Control2、Control3 のようにコントロールに名前を付けていることだと思います。

また、クリックして別のコントロール セットを作成するときに、別の種類のオブジェクトに同じ名前を付ける場合があります。たとえば、Control1 が最初に Textbox のように作成され、チェックボックスをクリックすると、その名前が付けられたとします。

コードを見ないと、ViewState.Clear() が機能しない理由を判断するのは困難ですが、ポストバックが不要なビューステートをクリアしようとしている場合は、新しいページをリクエストして、代わりにクエリ文字列に引数を渡すことができます。ポストバックの。ViewState 情報をサーバーに送り返す必要がないため、これも高速になります。

于 2008-12-05T11:56:48.450 に答える