2010-04-14 183 views
4

我想知道什麼是在多頁面之間傳遞大量值的最佳方式。我正在考慮使用context.Items []或Session []將值保存到數據庫。我不確定什麼是最好的方法。我傳遞的可能是大約40個變量。這將在結帳過程中進行,因此應該在用戶生命週期中持續保存。用戶在第一次輸入後不會更改這些值。價值將像帳單地址,名字和姓氏等在asp.net頁面之間傳遞數據

+1

那麼,context.Items將無法正常工作,因爲它會在請求之間被丟棄。 – tloflin 2010-04-14 18:32:52

+0

如果使用Server.Transfer(),我認爲context.items是持久的? 值是從一個頁面轉到另一個頁面,還是通過用戶的生命週期持續存在?用戶是否需要攔截並更改這些值? – bryanjonker 2010-04-14 18:37:03

+0

這將在結帳過程中進行,以便在用戶生命週期中保持它們。用戶在第一次輸入後不會更改這些值。這些值將類似於帳單地址,名字和姓氏等。 – user204588 2010-04-14 18:40:03

回答

4

會話可能是最有效的。但是,如果會話因任何其他原因超時或丟失,則任何條目都將丟失。所以如果持久性更重要,你可能想將它存儲在數據庫中。

3

也許Cross-Page Posting選項?

另一個選項可能是Server.Transfer方法連同Context.ItemsForm屬性。

在這種情況下,任何發佈的表單變量和查詢字符串參數都可用於第二個/第三個/ etc。頁面也是如此。

但是,瀏覽器中的URL將不會改變,直到你真的轉移到另一個頁面。

有一點要注意的是,如果 第一頁寫的東西給 響應緩衝區,而你沒有明確 它,然後從第二 頁的輸出會被追加到輸出第一個是 。這通常是 奇怪行爲的原因,看起來 頁面正在返回兩個不同的頁面。 此外,由於傳輸發生在 服務器上,因此您無法將 請求傳輸到外部站點。

可以找到更多的信息here

+0

我剛剛編輯了這個問題。值必須通過多頁傳遞 – user204588 2010-04-14 18:33:44

1

通過會話變量傳遞值不起作用。用戶點擊後退按鈕或單擊刷新並且會話變量已被垃圾收集時,您可能也有機會。這是任何緩存項目的方式。解決這個問題的一個方法是,當用戶進入第二頁時,您將所有變量放入由Key:Value對分隔的某個隱藏字段中。

如果這些值可以放在公開的地方,爲什麼不把它們放到URL中呢?

如果你不能這樣做,然後把它們放到數據庫中,並給每個用戶名指定一個Guid ID,這對我來說將是最後的選擇,因爲你必須在每個數據庫上讀寫數據庫請求。

1

答案完全取決於用戶下一次返回到您的網站時的期望。他希望你記得他已經輸入的聯繫信息嗎?如果是這樣,那麼你將不得不在數據庫,cookie等中使用長期持久性。你的用戶是否只爲這次訪問輸入其他人的信息(即客戶服務應用程序),並且會在下次輸入不同的信息他們參觀?如果是這樣,那麼你可能想使用Session對象。

+0

是的,這就是我的想法。真的沒有理由將信息保存到數據庫。這些變量用於xml請求,他們可以在下一個請求中更改他們的賬單信息,所以我認爲會話是要走的路 – user204588 2010-04-14 20:04:51