2012-07-11 62 views
1

我對VB很老,但是新到ASP.NET會話或ViewState字典

我已經在新網站上寫了幾本字典。問題是,如果多個用戶同時使用這些字典,則一個用戶將獲得另一個用戶的信息。

作爲ASP.NET新手,解決此問題的最佳方法是什麼?會話狀態或ViewState?我在找錯方向嗎?

+1

_「如果多個用戶正在使用這些字典在同一時間,一個用戶獲得其他用戶的信息」 _它們只能靜態/共享或者你使用了'Cache'。 – 2012-07-11 19:36:19

+0

[SessionState和ViewState有什麼區別?](http://stackoverflow.com/questions/733482/what-is-the-difference-between-sessionstate-and-viewstate) – 2012-07-11 19:37:30

+0

可能是ASP的新手。 NET,我收到的最好的建議是「只有在你真正意義的情況下才使用靜態。」許多WinForms /桌面開發人員大量使用靜態變量來維護狀態,但是當他們切換到Web開發時,最終遇到了很多這種範例的麻煩。 – 2012-07-11 20:06:26

回答

1

會話將保存特定於用戶和持續用戶瀏覽會話的信息。 ViewState將在用戶當前正在瀏覽的頁面上保存特定於控件的信息。

如果您希望存儲特定於用戶的信息,並且在瀏覽網站時需要保留這些信息,那麼Session是一個很好的解決方案。

2

服務器端:

會議爲特定用戶或者你可以說瀏覽器特定的。它不是在一個網站的所有用戶中共享的。會話可以容納任何對象數據類型。

Session["key"] = "value"; 

應用在所有網站上的用戶共享。

Application["key"] = "value"; 

客戶端:

ViewState的數據不是頁面中用戶間共享,甚至沒有。它在回發期間保留數據。

ViewState["key"] = "value"; 
0
如果您要訪問像 User信息,如姓名,姓氏數據

,... Session是bacause該數據未對當前用戶更改的最佳選擇。但如果你想在一個變量中存儲一個值,你應該考慮併發性問題。例如,如果你有一個簡單的按鈕和文本框的頁面,點擊按鈕文本框中的值存儲在Session,如果用戶打開2的實例頁面會出現會話衝突。每個按鈕都會點擊寫入會話數據。如果你想在一個頁面中存儲變量,你可以使用ViewState,但你應該認爲這個值可以很容易地被用戶看到。如果你想保護值,你應該使用View State Encryption。如果你想通過頁面之間的值,可以使用Query String

好運