2012-06-21 2 views
1

기괴한 문제가 있습니다. 페이지를 다시 게시 할 때마다 모든 세션 변수를 앞뒤로 전달할 필요가 없도록 많은 세션 변수를 사용합니다. 나는 수년간 이것을 해왔으므로 완전한 상실감에 처해있다.속성 값이 잘못 설정 됨

충분히 간단한
Imports Microsoft.VisualBasic 

Public Class SessionHandler 

    Private Shared _chgLinePkNum As String = "0" 
    Private Shared _chgStudentIDPk As String = "0" 

    Public Shared Property chgLinePkNum() As String 
     Get 
      ' Check for null first 
      If (HttpContext.Current.Session(SessionHandler._chgLinePkNum) Is Nothing) Then 
       ' Return an empty string if session variable is null. 
       Return "Nothing" 
      Else 
       Return HttpContext.Current.Session(SessionHandler._chgLinePkNum).ToString() 
      End If 
     End Get 

     Set(ByVal value As String) 
      If (value Is Nothing) Or (value = "") Then 
       HttpContext.Current.Session(SessionHandler._chgLinePkNum) = "Nothing" 
      Else 
       HttpContext.Current.Session(SessionHandler._chgLinePkNum) = value 
      End If 
     End Set 
    End Property 

    Public Shared Property chgStudentIDPk() As String 
     Get 
      ' Check for null first 
      If (HttpContext.Current.Session(SessionHandler._chgStudentIDPk) Is Nothing) Then 
       ' Return an empty string if session variable is null. 
       Return "Nothing" 
      Else 
       Return HttpContext.Current.Session(SessionHandler._chgStudentIDPk).ToString() 
      End If 
     End Get 

     Set(ByVal value As String) 
      If (value Is Nothing) Or (value = "") Then 
       HttpContext.Current.Session(SessionHandler._chgStudentIDPk) = "Nothing" 
      Else 
       HttpContext.Current.Session(SessionHandler._chgStudentIDPk) = value 
      End If 
     End Set 
    End Property 

가 ... 그럼, 내 코드에서, 내가 SessionHandler.chgLinePkNum하여 속성을 참조 :

나는 다음과 같은 코드를 가지고있는 App_Code 폴더에 SessionHandler.vb라는 파일이 있습니다. 이 코드 블록에는 LineItemNumber = 1 및 StudentID = [실제 ID 번호]가 있습니다.

If IsParking And checkbox.Checked = True Then 
     SessionHandler.chgLinePkNum = LineItemNumber 
     SessionHandler.chgStudentIDPk = StudentID 
     peParkingRegistration.Show() 
    End If 

첫 번째 줄이 실행되면 chgLinePkNum이 예상대로 1로 설정됩니다. 몇 가지 이상한 이유로 chgStudentIDPk를 1로 설정하고 있습니다. 다음 행을 실행하면 chgStudentIDPk를 올바른 StudentID 번호로 설정합니다. 문제는 chgLinePkNum을 StudentID 번호로 설정한다는 것입니다.

디버거에서 한 줄씩 실행했고 각 속성 집합 함수는 호출 될 때만 실행됩니다. 나는 단지 "HttpContext.Current.Session (SessionHandler._chgLinePkNum) = value"가 chgStudentIDPk에 값을 설정하고 그 반대의 경우를 어떻게 설정하는지 알 수 없습니다.

답변

1

정확하게 동일한 값을 갖는 것과 관련된 것은 무엇입니까?

Private Shared _chgLinePkNum As String = "0" 
Private Shared _chgStudentIDPk As String = "0" 
+0

정확하게 그랬습니다. 때로는 또 다른 눈이 필요합니다. 나는 조금 당황 스럽다 나는 그 것을 놓쳤다. – jtpowers

+0

당황하지 않아도됩니다. 코드 실명은 특히 내 책상에서 특히 많이 발생합니다. ;-) – freefaller