Storing an Object Reference in Session (VB.NET)

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.
justinkentAsked:
Who is Participating?
 
Carl TawnSystems and Integration DeveloperCommented:
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
 
Carl TawnSystems and Integration DeveloperCommented:
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
 
justinkentAuthor Commented:
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
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

 
justinkentAuthor Commented:
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
 
Carl TawnSystems and Integration DeveloperCommented:
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
 
justinkentAuthor Commented:
Fantastic, thank you.

:o)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.