Solved

Storing an Object Reference in Session  (VB.NET)

Posted on 2011-03-14
6
558 Views
Last Modified: 2013-11-27
Hi -

I want to store an object reference in memory so I can access user info from page to page.   It's a 2-part question, the first being how do I store the object reference in session, and secondly, how do I access it?

The first part I cannot get to work and the following is a simplified version of my code:

Namespace User
     Public Class User

         Public CID As String = ""
         Public UserID As String = ""
         Public UserName As String = ""
         Public UserFirstName As String = ""
         Public UserSurname As String = ""
         
          Public Sub GetUser(ByVal UID As String)

               (code here would go to the DB and get the user based in the supplied UID)

               CID = "123456"
               UserID = "567890"
               UserName = "fbloggs"
               UserFirstName = "Fred"
               UserSurname = "Bloggs"
          End Sub

     End Class
End Namespace

Open in new window



On my aspx page, either of the following does not work:

Dim UserData As New User.User
Session("Test") = UserData.GetUser(UN)

Open in new window


or

Dim UserData As New User.User
dim UserTest as Object
UserTest = UserData.GetUser(UN)
Session("Test") = UserTest

Open in new window


Both ways throw an error of: "Expression does not produce a value".

I understand why it's throwing an error, but can't understand how to just reference the object with it's filled variables in the session, so I can then access it on other pages.

Thanks.
0
Comment
Question by:justinkent
  • 3
  • 3
6 Comments
 
LVL 52

Expert Comment

by:Carl Tawn
Comment Utility
Well there is nothing wrong with the way you are trying to assign to the session, so there must be a problem with either the User class itself, or the GetUser() method.
0
 
LVL 52

Accepted Solution

by:
Carl Tawn earned 500 total points
Comment Utility
Actually reading your code (properly this time). Your GetUser() method is a sub, not a function, so it doesn't return a value, hence you cannot directly assign it to the session.

You would have to do:
Dim UserData As New User.User
UserData.GetUser(UN)

Session("Test") = UserData

Open in new window

0
 

Author Comment

by:justinkent
Comment Utility
Thanks very much Carl, that does now allow me to store the object in the session.

And how would I then access the variables in that object in subsequent pages?
0
Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

 

Author Comment

by:justinkent
Comment Utility
Actually, I think I figured it:

Something like this?

   Dim testData As User.User = Session("Test")
   Response.Write("CID = " & testData.CID)

Open in new window


It works...  Would this be correct and proper way?
0
 
LVL 52

Expert Comment

by:Carl Tawn
Comment Utility
You can't read properties from the object directly from the session. You need to pull your object out first and cast it to the correct type, then you can work with it:
Dim user As UserData = CType(Session("Test"), UserData)

'// quick sanity check
If Not user Is Nothing Then

     '// we have a valid object so we can now read from it
     Response.Write(user.UserFirstName)

End If

Open in new window

0
 

Author Comment

by:justinkent
Comment Utility
Fantastic, thank you.

:o)
0

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…

772 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

14 Experts available now in Live!

Get 1:1 Help Now