Solved

Storing an Object Reference in Session  (VB.NET)

Posted on 2011-03-14
6
563 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
ID: 35128306
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
ID: 35128320
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
ID: 35128648
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
3 Use Cases for Connected Systems

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, testing some more, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us.

 

Author Comment

by:justinkent
ID: 35128681
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
ID: 35128693
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
ID: 35128743
Fantastic, thank you.

:o)
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you ever wanted to restrict the users input in a textbox to numbers, and while doing that make sure that they can't 'cheat' by pasting in non-numeric text? Of course you can do that with code you write yourself but it's tedious and error-prone …
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
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…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

777 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