从保存在会话变量中的HashTable中获取值

时间:2015-07-17 16:35:50

标签: javascript asp.net vb.net hashtable

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

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

现在我想在客户端获取javascript,产品的价值("示例")。

我试试这个:

<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的值?

1 个答案:

答案 0 :(得分:0)

未经测试,但您可以将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);