因为我是自学成才的,我的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"类。