2012-04-04 82 views
0

我想就此問題提供一些建議。基本上,我有2頁(爲了簡單起見),第二頁完全依賴於第一頁。在頁面之間傳遞和存儲對象

因此,可以說主要就是頁面一搜索頁,第二頁是視圖頁。

該網站關閉了XML請求,最終目標是儘可能減少XML請求,因爲每個請求都有點慢。我考慮過使用會話,但過去我遇到了一些問題,隨機會話之間的會話混雜在一起,我只能通過將IIS中的回收過程更改爲非常短的時間框架來進行限制,所以我想知道是否存在任何其他方式。我已經嘗試了TempData,但是在一個請求後過期,所以在視圖頁面上刷新頁面似乎不可能。 (或是否?)

無論如何,我們的搜索頁面具有View屬性所需的5個屬性,但在視圖頁面上只需要2個屬性即可。

例如

搜索頁面包含

  • ID,
  • 名稱,
  • 電子郵件,
  • 身高

查看頁面,需要從以下搜索頁面來完成XML請求

  • ID,
  • 名稱,
  • 電子郵件

查看頁面顯示從搜索頁面中的所有信息,再加上一切都在XML響應。

我在搜索頁面中的鏈接只有url中的ID,因此第二頁上的XML請求需要名稱和電子郵件地址。不知道沒有會話是否可能?

我已經試過是:

存放在TempData的搜索結果。這樣,當有人點擊「查看」鏈接(<a href="/view/123456">View</a>),查看頁面加載像這樣的搜索結果:

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

然後視圖模型通過抓住從viewPageNameEmail,使一個XML呈現頁面請求和顯示響應,以及viewPage中的其他所需詳細信息。

它按照預期與tempdata一起工作。數據只保留在第一個請求上,在頁面刷新時死亡。會議是另一種選擇,但還有其他嗎?

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

及:爲什麼不使用更標準的技術,例如在搜索頁面指向控制器動作<form>標籤將執行搜索

(抱歉文字:)

+0

剛剛看過你的問題,我想起了一個我曾經參與過的項目。我通過使用非對稱加密算法對值(電子郵件,名稱等)進行加密並將其作爲QueryString值來解決問題。另外,請記住'TempData'也使用會話。 – tugberk 2012-04-04 07:46:43

回答

0

壁那麼你將有搜索控制器動作:

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

我使用GET方法,它允許用戶將書籤結果p中的表格上年齡,然後再回來。