2012-04-04 10 views
0

この問題についていくつかアドバイスをお願いします。基本的には、2ページ(簡単のため)であり、2ページ目は最初のページに完全に依存しています。ページ間にオブジェクトを渡して保存する

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

このサイトはXMLリクエストを処理します。究極の目的は、各リクエストが少し遅くなるため、XMLリクエストを最小限に抑えることです。私はセッションを使用することを検討しましたが、ユーザー間でセッションが無作為に混在していて、IISのリサイクルプロセスを非常に小さな時間枠に変更することによってしか抑制できないという問題が過去にありました。その他の方法で。私はTempDataを試しましたが、それは1回のリクエストの後に終了するので、ビューページのページリフレッシュは可能ではないようです。

とにかく、[表示]ページで必要な5つの属性を持つ[検索]ページがありますが、ビューページでXML要求を行うには2つしか必要ありません。

検索ページはが含まれています:

  • ID、
  • 名、
  • 市、
  • メール、
  • 身長

ビューページから、次のことを必要とします検索ページXML要求を完了するために:

  • ID、
  • 名、
  • メール

ビューページは、検索ページから、すべての情報が表示され、プラスXMLレスポンスのすべて。

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

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

検索結果をTempDataに格納します。誰かが「表示」のリンク(<a href="/view/123456">View</a>)をクリックしたときに、その方法は、ビューのページがそうのような検索結果をロードします。

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

ViewModelには、XMLを作り、viewPageからNameEmailをつかんでページをレンダリング他の必要な詳細と共にviewPageからの応答を要求し、表示する。

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

(テキストの壁のために申し訳ありません:)

+0

ちょうどあなたの質問を素早く見て、私はちょうどそのように取り組んだプロジェクトを思い出しました。私は、非対称暗号化アルゴリズムで値(電子メール、名前など)を暗号化し、それをQueryString値として入れて問題を分類しました。また、 'TempData'もセッションを使用していることに注意してください。 – tugberk

答えて

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); 
} 

私は、ユーザーが結果pをブックマークできる形式でGETメソッドを使用しました年齢とそれに後で戻ってくる。