【问题标题】:Get values from a HashTable saved in a session variable从保存在会话变量中的 HashTable 中获取值
【发布时间】:2015-10-07 10:59:20
【问题描述】:

在 asp.net (vb.net) 中,我有一个包含 HashTable 的 Session 变量

Dim products As Hashtable = New Hashtable
products("example") = "One product"
Session("products") = products

现在我想用 javascript 在客户端获取 products("example") 的值。

我试试这个:

<SCRIPT>
    function ShowSessionValue() {
        // new object
        var sessionHashT = {};

        // asign HashTable stored in Session("products") to "sessionHashT"
        sessionHashT= '<%=Session("products")%>';

        // All alerts show "undefined" (but no errors):
        alert(sessionHashT("example"));
        alert(sessionHashT(example));
        alert(sessionHashT.example);
    };
</SCRIPT>

通过断点,我看到 sessionHashT 的值是:

sessionHashT = 'System.Collections.Hashtable';

如何用javascript获取HashTable的值?

【问题讨论】:

  • 您可以将会话存储在隐藏字段中,然后使用 javascript 检索它。否则我认为你不能像那样抓住那个会话。但是这样做会在 HTML 中公开您的会话数据。
  • 感谢 Dylan 的建议,但如果我将数据存储在隐藏字段中,数据也会暴露出来,因为 html 字段是客户端。我不在乎这些数据是否暴露,因为否则我不会使用 javascript,会使用代码隐藏。我想从客户端访问该数据以加快响应速度。

标签: javascript asp.net vb.net hashtable


【解决方案1】:

未经测试,但您可以将您的 HashTable 序列化为 JSON 以包含在您的脚本中:

// assign HashTable stored in Session("products") to "sessionHashT"
sessionHashT= JSON.parse('<%= New JavaScriptSerializer().Serialize(Session("products"))%>');

我想你可以不解析它(注意缺少引号):

// assign HashTable stored in Session("products") to "sessionHashT"
sessionHashT= <%= New JavaScriptSerializer().Serialize(Session("products"))%>;

然后您应该能够使用虚线形式按键访问项目:

alert(sessionHashT.example);

【讨论】:

  • 谢谢马克,这个选项很有趣,我会尝试并发表评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多