わかった、
そこで、この Web アプリケーションを作成しました。この Web アプリケーションは、単一ページのアプリケーションになるように設計されています。さまざまなユーザー コントロール (フォームとして設計) の 1 つを 1 つの更新パネル (コントロールのクリア、新しいコントロールの読み込みなど) に読み込むメニューがあります。ユーザーは、入力、クリック、保存、削除などを行います。これらのユーザー コントロール内には、いくつかのデータバインドされた内部依存コントロールがあります。これが、それらを更新パネルにロードする主な理由です。
ここで、ユーザーが新しいメニューを選択してから、データバインドされたコントロールの値を変更しようとすると、最初のポストバックでのみコントロールの値が失われるというこの問題が発生しました。これは、通常のパネルをクリアしてロードしようとしたため、ユーザーコントロールが存在するコンテナーをクリアしたことが原因であると確信しており、まったく同じ問題が発生します。私の場合は (!IsPostBack) を使用しても機能しないため、データバインディングに関して、ページとユーザーコントロールの間で同じロジックを実行するブールセッション変数を作成しました。私の問題をさらにテストするために、アプリケーションをマルチページ アプリに変更すると、問題はなくなりました。値はポストバック時に保持されます。
つまり、元のポイントに到達するには、複数のページを使用することで機能を確認します。シングル ページ バージョン内で、「Server.Transfer(thedefaultpage.aspx)」をコードに追加するだけで、ユーザーを同じページに維持しながら、マルチページ アプローチから得た機能を保持できると考えました。それはうまくいきます。データの損失はありません。正常に動作します。これは後味が悪いのでしょうか?ユーザーのすべての機能と義務は常に 1 つのページで実行され、ナビゲーションは何もしません。
基本的にページを更新することは悪い習慣またはハックであることを心配していますが、アプリケーションの目的のために機能し、不要な場合に 2 ~ 3 ダースのページを作成する必要がなくなります。結果をクリアするためだけに誰かがこれを行う、またはマイナーなことをするスレッドをいくつか読みましたが、それだけです。
これが悪い習慣である場合 (またはそうでない場合でも)、最初のポストバック値の損失に対する解決策を誰かが持っているでしょうか? データバインドされたマスター、ページ、ユーザーコントロール、および子コントロールで enableviewstate=true および viewstatemode=enabled を使用しています。ご意見をお寄せいただきありがとうございます。