开发者

Guesses of my session value conflicts

I have a asp.net web form which will submit information to come as emails. Whenever user fill the form and click on submit button,the information user entered will be sent as email.

This web form has 4 page. but the web form will not use all 4 page on all requests.

if the user select a particular value in first page, the form will bypass the 3rd page and go the last 4th page(like...page1,2,4). IF it is any other values selected in the first page. form will navigate as page1,2,3,4.

So now my problem is when multiple users access the same website, the value in the first page get combines from different users and the form will act abnormally.Sometime it will bypass sometimes it will not bypass the page3

Show below is the variable decalrations:

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

I guess the problem is with strRoleType variable whether it is getting values from different users.

开发者_如何学Go

Do any have any work around?

 Public Property storeSelected()
        Get
            Dim returnValue As Integer
            returnValue = Session("isStoreSelected")
            Return returnValue
        End Get
        Set(ByVal value)
            Dim outputValue As Integer = value
            Session("isStoreSelected") = outputValue
        End Set
    End Property





 Dim currentView As Int16
            currentView = mvRequestorForm.ActiveViewIndex
            If currentView = 3 And isStoreSelected = 1 Then
                mvRequestorForm.ActiveViewIndex = (currentView - 2)

            Else
                mvRequestorForm.ActiveViewIndex = (currentView - 1)
            End If


The problem is that your variables are declared as Shared which means that they are, well, shared between the users. You will need to store these values in a way that each user session gets its own set of value (such as in a Session variable or so).

Update
While you do store values in Session state, you read the shared variable when deciding whether to show the view or not:

If currentView = 3 And isStoreSelected = 1 Then

You need to read this from session state as well:

If currentView = 3 And Session("isStoreSelected") = 1 Then

The access to the Session state value should preferably be encapsulated in some method or property.


In this case (with MultiView and handling the "page" navigation in the Postback), it's better to remove the Shared variables and use properties that link to the ViewState, like this:

        Public Property SelectedStore As Integer
            Get
                If (String.IsNullOrEmpty(ViewState("selectedStore")) Then
                    Return 0 'Default value
                Else
                    Return CInt(ViewState("selectedStore"))
                End If
            End Get
            Set (ByVal value As Integer)
                ViewState("selectedStore") = value
            End Set
        End Property

This way, the value is stored across "page" navigations, which you can get and/or set in your code-behind like this:

        If currentView = 3 And SelectedStore = 1 Then
            mvRequestorForm.ActiveViewIndex = (currentView - 2)
        Else
            mvRequestorForm.ActiveViewIndex = (currentView - 1)
        End If
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜