検索基準をセッション状態に保存し、asp.net updatepanel 内で検索を実行する検索アプリケーションを作成しています。複数の検索を連続して実行すると、2 番目または 3 番目の検索で最初の検索基準セットから結果が返されることがあります。
例: 最初の検索で "John Smith" を検索すると、John Smith の結果が表示されます。2 番目の検索で "Bob Jones" を検索すると、John Smith の結果が表示されます。
先ほど言ったように、すべての検索条件をセッション状態に保存し、それを ajax リクエスト内のセッション状態から読み取り、DB クエリをフォーマットします。VS にブレーク ポイントを配置すると、すべてが正常に動作しますが、ブレーク ポイントがないと、元の検索基準と結果が得られます。
私の推測では、それらはセッションに保存されているため、ajax リクエストは何らかの方法で独自のセッションを取得し、それに基準を保存し、毎回そのセッションから基準を取得しますが、非非同期のものは基準がいつ表示されるかを確認できます。変更され、それに応じて状態への変更が保存されますが、それらは 2 つの異なるセッションからのものであるため、保存および読み取られる内容に不一致があります。
編集:::さらに詳しく説明すると、検索条件をクエリ文字列に追加するという提案がありましたが、これは通常は良い方法であり、そうあるべきであることに同意しますが、私たちの要件に従っているとは思えません。彼らは、ユーザーが入力コントロールに入力して検索をヒットし、ページのリロードがなく、ページの進行状況インジケーターだけが表示され、現在のページで他の機能をナビゲートして使用できるようにすることを望んでいます。クエリ文字列に条件を追加すると、別のリクエストを実行してページ全体を読み込む必要があり、検索条件によっては非常に長い時間がかかる場合があります。これが、検索を実行するために ajax 呼び出しを使用している理由であり、別のフル ページ リクエストを発生させていない理由です..... これで状況が明確になることを願っています。