خاصية الحصول على قيمة غير صحيحة

لدي مشكلة غريبة. أستخدم كثيرًا من متغيرات الجلسة ، لذلك لا يتعين عليّ تمريرها جميعًا في كل مرة تقوم فيها إحدى الصفحات بإعادة النشر. لقد كنت أفعل هذا لسنوات لذلك أنا في خسارة كاملة.

لدي ملف يسمى SessionHandler.vb في المجلد App_Code الذي يحتوي على التعليمة البرمجية التالية:

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. تحتوي كتلة التعليمات البرمجية هذه على LineItemNumber = 1 و StudentID = [رقم المعرف الفعلي].

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

عند تشغيل السطر الأول ، يتم تعيين chgLinePkNum على 1 كما هو متوقع. لسبب غريب ، يتم أيضاً تعيين chgStudentIDPk إلى 1. عند تشغيل السطر التالي ، فإنه يقوم بتعيين chgStudentIDPk إلى رقم الطالب الطالب الصحيح. المشكلة هي أنه يقوم أيضاً بتعيين chgLinePkNum إلى رقم الطالب الطالب.

لقد قمت بتشغيله خطًا سطراً في مصحح الأخطاء ويتم تشغيل كل دالة تعيين الخاصية فقط عندما يتم استدعاؤها. أنا فقط لا يمكن معرفة كيفية "HttpContext.Current.Session (SessionHandler._chgLinePkNum) = value" يتم تعيين قيمة chgStudentIDPk والعكس بالعكس.

0

1 إجابة

أي شيء له علاقة بهذه لها نفس القيمة بالضبط؟

Private Shared _chgLinePkNum As String = "0"
Private Shared _chgStudentIDPk As String = "0"
0
وأضاف
لا حاجة للإحراج ، عمى الكود شائع جدا ، خصوصا في مكتبي ؛-)
وأضاف المؤلف freefaller, مصدر
كان هذا بالضبط. في بعض الأحيان يستغرق الأمر مجرد مجموعة أخرى من العيون. أشعر بالحرج بعض الشيء فاتني ذلك.
وأضاف المؤلف jtpowers, مصدر