私の ASP.NET ページでは、ドロップダウン リストで選択した値に応じて、カスタム コントロールを動的に選択して読み込む必要があります。しかし、次の問題が発生しました。ドロップダウンリストが変更された (したがって、次回ページをリロードするときに別の動的コントロールをロードする必要がある) と、「ViewState を読み込めません」という例外が発生します。コントロールしても見つからない。では、ビューステートが存在しないコントロールの状態を復元しようとするのを止める方法はありますか?
4 に答える
最初にまったく同じ方法でコントロールをロードし、その後変更LoadViewState
するか、ページと同期しないことがわかっている動的コントロールのビューステートを無効にする必要があります。
ビューステートを復元する前に、ドロップダウン/追加されたコントロールの状態が復元されていないようです。コントロール X を表示するようにデフォルトで設定されているドロップダウンを、ユーザーがコントロール Y を表示するように変更した場合、ビューステートが復元される前に、ページはコントロール Y をコントロール コレクションに追加する必要があります。
コントロールの可変長リストがユーザーによって追加、再配置、および/または変更され、各ポストバック中に変更可能であるという同じ問題がありました。
答えは驚くほど簡単です。
動的コントロールを作成するときは、ページ コントロール コレクションに追加する前に「 EnableViewState = False」を設定します。その後、viewstate 情報は保存されず、動的コントロールがいくつ追加または削除されても、他のすべての viewstate が正しく機能します。
これらを動的に追加する場合、通常はとにかくすべてのプロパティを設定しているため、私の場合は実際には非常に似た作業を作成しませんでした。