2011-12-15 5 views
1

これには簡単な答えがあるかもしれませんが、私はそれを見ていません。私はプロジェクトに近すぎるので、そうしてください。バックボタンとセッション状態を連携させるにはどうすればいいですか?

私はasp.net 2.0の検索アプリケーションを持っています。これは、検索フォームで始まり、結果がユーザーに表示される一連のページです。検索結果ページと検索結果ページの間には、一連のフィルタを表示するフィルタページがあり、ユーザーは検索結果をフィルタリングできます。検索ページで最初の検索を実行し、結果をセッションに保存します。最初の検索結果の合計が特定の数を超える場合(例の場合は50とします)、ユーザーはフィルタページに移動します。ここには、結果に適用できるいくつかのフィルタが表示されます。

検索結果に選択したフィルタが適用されると、カウントが50以上の場合、選択されていないフィルタのみがページに表示されたままページに残ります。カウントが50未満の場合、結果ページに表示されます。フィルタページにあるが結果を確認したい場合は、結果の現在の状態を取得してユーザーを結果ページに移動させるボタンがあります。

私の問題 - いくつかのフィルタを適用して戻るボタン(ページキャッシュなし)をクリックした後の結果ページにある場合、どのようなフィルタであっても検索結果の以前の状態を取得するにはどうすればよいですか私は選択されて適用された?さらに、私が一連の4つの "適用フィルター"(フィルターを適用する - まだ50以上、他のフィルターを適用 - まだ50以上、さらに別のフィルターを適用 - 50以上を適用した後、結果ページに行った場合) - yay!50未満の結果ページに移動します)、バックボタンを押し続けると、セッションの検索結果が縮小する各バージョンを取得するにはどうすればよいですか?

申し訳ありませんが、これは少し奇妙で理解しやすいものではありません - これは、単純な文章で単純に囲むだけの問題ではありません。

私は、(手元の質問に関係する)考えや質問に最も熱心です。

UPDATE - FYI、私はマルチページデザインを決定しませんでした。要件は、既存のサードパーティ検索アプリの流れに従うと述べています(リバースエンジニアリングは素晴らしいですか?)。

おかげ

+0

はたぶん、あなたはURLではなく、セッション状態に検索およびフィルタリング情報を維持する必要があります。私は検索アプリケーションで2、3年間働いており、私は最初にその方法を行ったことを願っています。 ブックマークを考えると、ユーザーが結果ページをブックマークしておくと、明日のブックマークから彼の結果を返すことができれば、彼にとってはうれしいでしょう。検索パラメータをセッション状態で保存すると、それを行うことはできません。 – Johnny5

+0

私はこれがウェブフォームだと仮定し、セッションにアイテムを入れています。いくつかのコードを投稿できますか?ページ間を移動することを避けるために、モーダルポップアップでこれらの改良のいくつかを行うことができますか? –

+0

残念ながら、私はセキュリティ上の理由からコードを投稿できません。 –

答えて

0

はあまりにも重要であるが、何あなたが真剣のような音を説明すると、検索を処理する方法をジャッキアップまでもありません。

通常、検索条件と結果は同じページにあります。条件を変更して検索をクリックすると、トップ50の結果が表示され、さらに多くの結果が表示されます。いずれにしても、両方の状況でクエリを実行する必要があるため、説明した操作をこれ以上高価にすることはできません。

NewEgg.comをご覧になり、this pageから "詳細検索"を試してみてください。左に約20種類の基準要因があることがわかります。新しい基準を追加すると、ページの上部にあるパン粉が変わります。彼らはあなたの検索結果から任意の基準をすばやく排除することができるように、パン粉の各横に少し(x)を持っています。 Voilaの戻るボタンは必要ありません。

これを処理するには、セッション状態が必要ないことに注意してください。ほとんどの場合、隠されたフォームフィールドを使用することができます。これは、ブラウザのバックボタンの使用をサポートします。

+0

私は同意しますが、複数ページのデザインはすでに要件によって定められています。私は実際に手元の問題(asp.netセッションの状態と戻るボタン)を解決する方法に関する提案だけでなく、その流れについての議論を必要としません。 –

+0

@DanAppleyard:セッション状態の代わりに隠しフィールドを使用してフィルタデータを保存するだけですか?このように状態は、サーバーが次に考えるものではなく、クライアントの要求によって決定されます。 – NotMe

0

現在のセッションベースのパラメータをそのまま使用しますが、すべてのquerystringパラメータでそれらを無効にします。このようにして、すべてのURLに値を割り当てずに値を保持しながら、以前の手動のデータエンジニア(ブラウザ履歴のクエリーストリング)に合わせます。

(AND検索のためのPOSTを使用しないでください。)

関連する問題