I know I can reference a simple session variable (ie: string) in javascript like this:
var SesVar = '<%= Session("MySessionVariable") %>';
alert(SesVar);
But the problem I have is that I have an ASP.NET generic list object stored in Session.Contents. The object looks like this:
Public Class LetterReason
Private _reasonCode As String
Public Property ReasonCode() As String
Get
Return _reasonCode
End Get
Set(ByVal value As String)
_reasonCode = value
End Set
End Property
Private _reason As String
Public Property Reason() As String
Get
Return _reason
End Get
Set(ByVal value As String)
_reason = value
End Set
End Property
I’ve stored a list of this object in session contents like so:
Dim lsReasons As New List(Of LetterReason)
lsReasons = MyWCF.Get(reasons)
Session.Contents("lsReasons") = lsReasons
Problem is, when I use the code above (SesVar), it returns this:
System.Collections.Generic.List`1[LetterWriterASP2.ServiceReference1.LetterReason]
Is there any way I can access a list stored in session contents through javascript?
Thanks,
Jason
The problem is that the evaluation binding tag will automatically call the ToString() method on the whatever it finds in the
Sessionobject.So, if:
has a meaningful implementation (e.g. it is a string, or a value type), then you’ll get what you expect.
However, in your example, you’re storing an instance of the class,
LetterReason, for which the defaultobjectToString() virtual method call will return the name of the class.The answer depends what you want to do with the result. You can’t trivially use a .NET object in JavaScript, the data is going over a domain boundary (i.e. out of your .NET website and over the network and then into the DOM of a HTML page).
You will need to serialise it in some way, probably JSON. Use an approach like this: Can you Instantiate an Object Instance from JSON in .NET?
That’s if you need all the richness of the class. If you’re just looking for specific properties/methods, you could have:
So, here you’ll need to cast your session instance to your particular class (plain .net
System.Objectare stored in the Sessions, giving you maximum flexibility) and then take the property you want.However, serialising the object from .NET to JSON would be much the best solution, as it’s flexible and maintainable.