Asp.net 如何在webform中持久化对象
由于我是自学成才,我的VB代码还不错,但我的OOP使用很差。我相信这是可以做到的,但我还没有发现如何做到 我正在构建一个webforms应用程序,需要从广告中获取有关用户的数据。我有一个Person类,我可以使用它,如下所示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
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被发送到客户端,而会话状态不被发送。