2010-03-25 21 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,所以你可能需要调整它。

相关问题