0

この問題についてアドバイスをお願いします。基本的に、2 つのページがあり (簡単にするため)、2 番目のページは最初のページに完全に依存しています。

つまり、メイン ページが検索ページで、2 番目のページがビューページであるとします。

このサイトは XML 要求を処理します。最終的な目標は、各要求が少し遅いため、XML 要求を最小限に抑えることです。セッションの使用を検討しましたが、過去にセッションがユーザー間でランダムに混在するという問題がありましたが、IIS のリサイクル プロセスを非常に短い時間枠に変更することでしか抑制できませんでした。その他の方法で。TempData を試してみましたが、1 回のリクエストで期限切れになるため、ビュー ページでページを更新することはできません。(またはそれは?)

とにかく、ビュー ページで必要な 5 つの属性を持つ検索ページがありますが、ビュー ページで XML 要求を行うのに必要なのは 2 つだけです。

例えば

検索ページの内容:

  • ID、
  • 名前、
  • 街、
  • Eメール、
  • 身長

表示ページは、xml 要求を完了するために、検索ページから以下を必要とします

  • ID、
  • 名前、
  • Eメール

ページの表示には、検索ページからのすべての情報に加えて、XML 応答内のすべての情報が表示されます。

検索ページにあるリンクにはURLにIDしか含まれていないため、2番目のページのXMLリクエストには名前と電子メールが必要です。セッションなしで可能かどうかわかりませんか?

私が試したことは次のとおりです。

検索結果を TempData に格納します。そうすれば、誰かが「表示」リンク ( <a href="/view/123456">View</a>) をクリックすると、表示ページに次のような検索結果が読み込まれます。

var viewPage = SearchResults.Where(w => w.ID == id).FirstOrDefault();

次に、ViewModel はNameEmailからviewPageと を取得し、XML 要求を作成して、 からのその他の必要な詳細とともに応答を表示することにより、ページをレンダリングしますviewPage

tempdata で期待どおりに動作します。データは最初のリクエストでのみ保持され、ページの更新で消滅します。セッションは代替手段ですが、他にはありますか?

(テキストの壁でごめんなさい:)

4

1 に答える 1

0

<form>検索を実行するコントローラーアクションを指す検索ページのタグなど、より標準的な手法を使用してみませんか。

@using (Html.BeginForm("search", "somecontroller", FormMethod.Get))
{
    ... some input fields for your search criteria
    <button type="submit">Search</button>
}

次に、検索コントローラーアクションが実行されます。

public ActionResult Search(SearchModel model)
{
    var results = ....
    return View(results);
}

フォームでGETメソッドを使用しました。これにより、ユーザーは結果ページをブックマークして、後でそのページに戻ることができます。

于 2012-04-05T06:19:29.930 に答える