簡體   English   中英

跨頁面ASP.net傳遞值

[英]Passing values across pages ASP.net

我需要將一長串Ids從一頁傳遞到另一頁,我當時在考慮使用querystring,但考慮到要傳遞的id數量可能達到300個,我認為這不是一個好主意。 從我的理解來看,一個選擇可能是使用會話,在我看來,這似乎是一個最佳解決方案,但另一方面

當用戶執行某些操作並且不再需要ID列表時,我當然可以清除會話,但是如果用戶不執行任何操作就離開了頁面,我想清除會話,該怎么辦?

如果多個用戶正在使用相同的功能,我是否需要混淆會話的項目或該會話是針對單個用戶的?

我正在asp.net C#中工作

謝謝

如果多個用戶使用相同的功能,並且每個用戶的ID相同,則使用應用程序狀態或Singleton模式。

如果每個用戶都需要有自己的ID列表,則可以使用每個用戶唯一的會話狀態。 在經典的ASP中,您不應該使用對象(例如集合),但是在ASP.NET中,您可以將它們放置在列表,數組等中。

在ASP.NET中,如果啟用會話服務,則可以在服務器之間共享會話狀態,也可以將會話狀態放置在數據庫中。

如果ID是數字,您也可以考慮使用cookie,可以用逗號分隔它們並以相對較低的開銷重新加載它們,但要注意的是,聰明的用戶可以更改這些值。

最后,您可以將這些值存儲在兩次調用之間的數據庫表中。

會話是按“用戶”進行的(更像瀏覽器實例)。

會話在一些預設/預定義的超時后過期。

會話對每個用戶有效,只要您不平衡Web服務器的負載,就可以使用會話來執行此操作(可能是數據集或哈希表會話變量,這可能很難看...)。

要清除會話,請查看:Session.Contents.Remove。

結合使用兩種方法-查詢字符串和會話。

當您需要存儲ID時,請將其重擊到Session中,但是您使用的密鑰應該是隨機生成的Guid

string key = Guid.NewGuid().ToString();
Session[key] = myIDs;

請記住該guid,並在用戶離開頁面時將其附加到查詢字符串中(他們將單擊超鏈接或單擊按鈕以離開頁面,然后可以將其附加)。

如果用戶不執行魔術操作而離開頁面,則檢索ID的鍵在離開時會丟失。 當Session回收/終止或執行Session.Clear()時,將刪除放置在Session中的ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM