如何在 Web 窗体中保留对象



因为我是自学成才的,我的VB编码还不错,但我对OOP的使用很差。我相信这是可以做到的,但我还没有发现如何做到。

我正在构建一个网络表单应用程序,该应用程序需要从AD中获取有关用户的数据。我有一个 Person 类,我可以按如下方式使用

Public Class _Default
    Inherits System.Web.UI.Page
    Dim LoggedOnPerson As Person        'Added here so available throughout class
    Private strLoggedOnUser As String
    Private strADDomain As String
    Private strADUserID As String
    Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        strLoggedOnUser = Request.ServerVariables("LOGON_USER").ToUpper
        strADDomain = strLoggedOnUser.Split("")(0)
        strADUserID = strLoggedOnUser.Split("")(1)
        If Not IsPostBack Then
            'Dim LoggedOnPerson As Person   *** changed to
            LoggedOnPerson = New Person
            'Get details from AD for logged on user
            LoggedOnPerson.GetDetails(strADDomain, strADUserID)
            'Store in Session
            Session("LoggedOnUser") = LoggedOnUser
            'This will now give me access to details such as
            'LoggedOnPerson.EmailAddress
            'LoggedOnPerson.GivenName
            'LoggedOnPerson.TelephoneNo etc.
        Else
            'Postback so pull in details from Session
            LoggedOnUser = Session("LoggedOnUser")
        End If
    End Sub
End Class

我的问题是我无法在其他事件中访问LoggedOnPerson。

例如
Public Sub SaveDetails()
    Dim email As String = LoggedOnPerson.Email 
    'This now produces correct result. No error that LoggedOnPerson is not declared
End Sub

我当然得到 LoggedOnPerson 没有声明错误。我该如何解决这个问题。

您已在事件中创建Page_Load"Person"的对象。把它带到外面,在班级层面声明。此外,将该对象添加到Page_Load事件的状态/会话状态,并将其类型转换为其他事件中的"Person"类。

最新更新