gpt4 book ai didi

javascript - 使用 Javascript 访问 ASP session 变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:50:51 26 4
gpt4 key购买 nike

我知道我可以像这样在 javascript 中引用一个简单的 session 变量(即:字符串):

var SesVar = '<%= Session("MySessionVariable") %>';
alert(SesVar);

但我遇到的问题是我有一个 ASP.NET 通用列表对象存储在 Session.Contents 中。该对象看起来像这样:

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

我已将此对象的列表存储在 session 内容中,如下所示:

Dim lsReasons As New List(Of LetterReason)

lsReasons = MyWCF.Get(reasons)

Session.Contents("lsReasons") = lsReasons

问题是,当我使用上面的代码 (SesVar) 时,它会返回:

System.Collections.Generic.List`1[LetterWriterASP2.ServiceReference1.LetterReason]

有什么方法可以通过 javascript 访问存储在 session 内容中的列表?

谢谢,

杰森

最佳答案

问题是求值绑定(bind)标签会自动调用它在 Session 对象中找到的任何内容的 ToString() 方法。

所以,如果:

var SesVar = '<%= Session("MySessionVariable").ToString() %>';

有一个有意义的实现(例如,它是一个字符串,或者一个值类型),然后你就会得到你所期望的。

但是,在您的示例中,您正在存储类 LetterReason 的实例,默认的 object ToString() 虚拟方法调用将返回名称类(class)的。

答案取决于您想对结果做什么。您不能在 JavaScript 中简单地使用 .NET 对象,数据会跨越域边界(即从您的 .NET 网站出来,通过网络进入 HTML 页面的 DOM)。

您需要以某种方式对其进行序列化,可能是 JSON。使用这样的方法:Can you Instantiate an Object Instance from JSON in .NET?

如果您需要该类的所有丰富内容,那就是这样。如果您只是在寻找特定的属性/方法,您可以:

var reasonCode = '<%= ((LetterReason)Session("MySessionVariable")).ReasonCode() %>';
var reason = '<%= ((LetterReason)Session("MySessionVariable")).Reason() %>';

因此,在这里您需要将 session 实例转换为您的特定类(纯 .net System.Object 存储在 session 中,为您提供最大的灵 active ),然后获取您的属性想要。

但是,将对象从 .NET 序列化为 JSON 将是最好的解决方案,因为它灵活且可维护。

关于javascript - 使用 Javascript 访问 ASP session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6999298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com