2010-03-25 30 views
0

我有下面的變量,當我使用同一個web窗體的多個實例時會產生問題。你能不能讓我知道我可以使用共享以外的其他變量來達到這個目的?我可以使用哪些變量而不是共享?

Public strRoleType As String = String.Empty 
Protected Shared isAreaSelected As Integer = 0 
Protected Shared isStoreSelected As Integer = 0 
Protected Shared isHeadOfficeSelected As Integer = 0 
Protected Shared isRegionSelected As Integer = 0 
+1

對不起,但我不明白你的問題。 你能解釋一下這個問題是什麼和/或你想達到什麼目的。 – Rhapsody 2010-03-25 17:01:55

+0

您不應該像這樣在ASP.NET中使用共享變量(如果它基於每個用戶),因爲它會影響應用程序範圍內的所有內容。你究竟想要做什麼? – keyboardP 2010-03-25 17:02:04

+0

我在我的網絡表單中遇到了會話衝突問題,因此我將所有會話變量更改爲共享變量..這仍然是一個問題..您建議作爲替代方案嗎? – SmartestVEGA 2010-03-25 17:05:13

回答

1

剛刪除Shared,一切都應該沒問題。

+0

nope ...當我刪除共享.the表單沒有按預期工作 – SmartestVEGA 2010-03-25 17:08:48

+0

請參閱鏈接..這是我正面臨的確切問題:http://stackoverflow.com/questions/2514534/guessess-of-my-session-value-conflicts – SmartestVEGA 2010-03-25 17:10:31

+2

我讀過你的我認爲你對ASP.NET在多人同時查看網站時的工作方式非常非常困惑。我不明白你爲什麼要使用頁面變量和會話變量的組合,並且由於你的應用程序只包含一個.aspx,所以頁面變量很合適(否則使用會話變量)。也就是說,使用一個或另一個,並且您不需要在應用程序中「共享」。 – 2010-03-25 17:22:06

0

這是一個大量的工作,但它創造的形式級存儲

對於每一個共享變量的將其轉換爲在Web窗體的屬性。然後將值存儲在ViewState中

'default to 0 if blank, else convert to int 
Public Property IsAreaSelected() As Integer 
    Get 
        Return If(ViewState("IsAreaSelected") Is Nothing, 0, Cint(ViewState("IsAreaSelected"))) 
    End Get 
    Set(ByVal value As Integer) 
        ViewState("IsAreaSelected") = value 
    End Set 
End Property 

這種方式值與頁面保持一致。

請注意我這個編碼了的飛行,而不是在VS,所以你可能需要調整它。

相關問題