ユーザーの好みに応じて CRUD タスクEmployee
とCRUD タスクの両方を処理するページを設計しようとしています。Station
サブクラス化UserControl
して を作成し、EditEntityControl
この基本クラスから派生した 2 つのカスタム コントロールを開発し、それぞれがEmployee
またはStation
オブジェクトの CRUD アクティビティを処理します。
ユーザーがポストバックをトリガーするドロップダウンリストの値を切り替えると、正しいコントロールをページに動的にロードしたいと考えています。これは各コントロールの最初のロードで機能しますが、(2 番目のコントロールをロードした後に) 最初のコントロールをリロードしようとすると、次のエラーが発生します。
ビューステートの読み込みに失敗しました。ビューステートが読み込まれるコントロール ツリーは、前の要求でビューステートを保存するために使用されたコントロール ツリーと一致する必要があります。たとえば、コントロールを動的に追加する場合、ポストバック中に追加されたコントロールは、最初のリクエスト中に追加されたコントロールのタイプと位置と一致する必要があります。
また、2 番目のコントロールの初期ロード時に、データ バインディングが正しいコントロールにバインドされない奇妙な動作が見られます (たとえば、コントロールのテキスト ボックスではなくボタンのテキストを設定します)。
このシナリオを処理する方法はありますか? または、このエラーを回避するために、ページを完全にクリアしてViewState
再リクエストする方法はありますか? PostBack 間のこのViewState
混乱/混乱を解決できれば、他のすべては設計どおりに機能しているようです。