如何在JavaScript中获取ASP.NET会话变量?

时间:2013-01-29 10:07:37

标签: asp.net vb.net session

我有一个带有一些文本字段的网站。

网站b位于arame的iframe中。

我在网站b中保存了不同会话中的一些值

  Session("anzahlInterneTeilnehmer") = anzahlInterneTeilnehmer
  Session("anzahlExterneTeilnehmer") = anzahlExterneTeilnehmer

在我保存会话后,我从网站a调用父功能

parent.parentTeilnehmer()

我想在网站a

的文本字段中显示会话值
            function parentTeilnehmer() {
            var intern = ????
            var extern = ????
            var InterneTextFeld = ISGetObject("WebInput1");
            var ExterneTextFeld = ISGetObject("WebInput2");
            InterneTextFeld.SetValueData(intern);
            ExterneTextFeld.SetValueData(extern);
        }

如何在不刷新整个页面的情况下做到这一点?

3 个答案:

答案 0 :(得分:4)

会话存储在服务器端,因此您无法通过javascript访问客户端这些变量。我建议将这些变量保存到隐藏字段

<input type="hidden" id="anzahlInterneTeilnehmer" runat="server" />
<input type="hidden" id="anzahlExterneTeilnehmer" runat="server" />

将事件处理程序附加到网站A的页面PreRender方法并在其中设置 anzahlInterneTeilnehmer对会话值的价值(原谅我的VB)

Private Sub Page_Render(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.PreRender
anzahlInterneTeilnehmer.Value = Session("anzahlInterneTeilnehmer")
End Sub

然后在你的javascript中

var internHolder = document.getElementById("anzahlInterneTeilnehmer");
var intern = internHolder.value;

答案 1 :(得分:3)

你可以在javascript

中这样做
var val = <%= Session["MyVariable"]%>; 

答案 2 :(得分:1)

只有当你的js函数出现在 .aspx 页面上时才能访问javascript中的Session变量,这不是一个好方法,因为最好将我们的脚本文件保存在单独的Scripts文件夹中,这样你才能将会话值存储在隐藏字段中:

<script type="text/javascript">
    function GetSessionValues() {
        var intern = '<%=Session("InternalValue") %>';
        var extern = '<%=Session("ExternalValue") %>';
    }
</script>