Asp.net 如何在webform中持久化对象

Asp.net 如何在webform中持久化对象,asp.net,vb.net,webforms,Asp.net,Vb.net,Webforms,由于我是自学成才,我的VB代码还不错,但我的OOP使用很差。我相信这是可以做到的,但我还没有发现如何做到 我正在构建一个webforms应用程序,需要从广告中获取有关用户的数据。我有一个Person类,我可以使用它,如下所示 Public Class _Default Inherits System.Web.UI.Page Dim LoggedOnPerson As Person 'Added here so available throughout class

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

我正在构建一个webforms应用程序,需要从广告中获取有关用户的数据。我有一个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。e、 g

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\u Load事件中创建了“Person”对象。把它带到外面,在类级别声明。另外,在加载事件页面上添加该对象以查看状态/会话状态,并在其他事件中键入“Person”类。

谢谢。。。我已经更新了我的原始代码以反映您的建议。似乎有用。。。测试。当你开始输入“LoggedOnPerson”时,你应该能够在intellisense中看到它。如果您不能,那么您应该理解对象对于该范围不可用,这通常是问题所在。还要尝试找出何时使用视图状态以及何时使用会话状态。它与发送到客户端的敏感数据和请求/响应的大小更相关。无论如何,快乐的编码!撒马尔。。我认为ViewState不发送给客户端,而会话发送给客户端,对吗?相反。Viewstate被发送到客户端,而会话状态不被发送。