使用Javascript显示在ASP.NET C#中的另一个页面的标签中存储会话#

时间:2017-01-30 16:10:45

标签: javascript c# asp.net session

有没有办法使用javascript变量存储会话并显示在另一个页面的标签上?我使用的是ASP.NET WebForms C#。

感谢。

1 个答案:

答案 0 :(得分:1)

取决于你的意思" session" - 如在"由____"管理。

  • 如上所述,"会话"可以由服务器进行管理(更安全,特别是如果您想要"完全控制"对于要保留的数据)

  • 但它不是"只有"您可以创建"会话"。如果您的需求可以存在于客户端方面,请参阅WebStorage

    陈述显而易见的客户端,以便用户/客户端可以操纵(通常)操作,就像来自客户端的任何内容一样,永远不要信任(始终验证/检查)。

琐碎的例子(必须改进):

在某些_Layout页面(或母版页,或您网站的某些Javascript库)中:

var ClientSession = function() {

    this.setItem = function(key, value) {
        sessionStorage.setItem(key, value);
    }

    this.getItem = function(key) {
        return sessionStorage.getItem(key);
    }
}

var mySessionBroker = new ClientSession();

在其他页面中,您为浏览器会话的持续时间设置items

<script>       

    window.mySessionBroker.setItem("key1", "hello from Index page");

    //At this point, you should see that you can store something generated from the server 
    //and manage it from that point forward in javascript/client like so:
    window.mySessionBroker.setItem("key2", "<%=HttpUtility.JavaScriptStringEncode(SomeServerVariable) %>");

</script>

在您网站上的任何其他页面(相同的域/协议)中您要使用/显示的内容等sessionStorage

中设置的项目
<p>Session data: <input id="someInput" name="foo" /></p>


<script>

    window.onload = function() {
        var target = document.getElementById("someInput");
        target.value = window.mySessionBroker.getItem("key1");
    }


</script>

您可以使用浏览器开发工具检查sessionStoragelocalStorage(不用说,如上所述,如果可以,其他人可以 - 因此验证/检查并不将其用于敏感物品)。

H个..