在ASP.NET C的另一个页面的标签中使用Javascript显示存储会话#
有没有办法使用javascript变量存储会话并显示在另一个页面的标签上?我正在使用ASP.NET WebForms C#在ASP.NET C的另一个页面的标签中使用Javascript显示存储会话#,javascript,c#,asp.net,session,Javascript,C#,Asp.net,Session,有没有办法使用javascript变量存储会话并显示在另一个页面的标签上?我正在使用ASP.NET WebForms C# 谢谢。取决于您所说的“会话”的含义,如“管理者” 如上所述,“会话”可以由服务器管理(更安全,特别是如果您希望“完全控制”要持久化的数据) 但这并不是你可以创建“会话”的“唯一”地方。看,如果你的需求能够满足客户的需求 显而易见,它是客户端,因此用户/客户端可以对其进行操作(很简单),因此就像来自客户端的任何东西一样,永远不要信任(始终验证/检查) 琐碎的例子(必须改
谢谢。取决于您所说的“会话”的含义,如“管理者”
- 如上所述,“会话”可以由服务器管理(更安全,特别是如果您希望“完全控制”要持久化的数据)
- 但这并不是你可以创建“会话”的“唯一”地方。看,如果你的需求能够满足客户的需求 显而易见,它是客户端,因此用户/客户端可以对其进行操作(很简单),因此就像来自客户端的任何东西一样,永远不要信任(始终验证/检查)
琐碎的例子(必须改进): 在某些
\u布局页面(或母版页,或站点的某些Javascript库)中:
在另一个页面中,为浏览器会话的持续时间设置项
您可以使用浏览器开发工具检查会话存储
和本地存储
(不用说,如上所述,如果您可以,任何其他人都可以-因此验证/检查并且不要将其用于敏感项)
Hth..您计划如何存储此会话?如果您有一个输入元素,则将其值设置为该会话,并通过javascript将其拉入并保存为变量请花几分钟时间阅读然后更新问题,并提供您尝试执行的操作的完整详细信息。您不能直接使用JS存储会话变量。会话是服务器端概念,JS是客户端概念。如果您想使用JS设置一个可以传递给服务器的变量(服务器可以将其存储在会话中),那么您可以将该变量放入表单元素并发回,或者使用ajax。或者,如果您只需要将变量直接传递到下一页,那么在querystring中添加一个包含该变量的超链接就足够了。正如charlie所说,它告诉我们您想要实现的目标的全部细节,而不涉及具体的实现方法。如果SomeServerVariable
最终来自用户或第三方,这里就存在代码注入的问题。在将变量的值作为已执行javascript的一部分插入页面之前,对该变量使用HttpUtility.JavaScriptStringEncode
。@NineBerry同意-谢谢!
var ClientSession = function() {
this.setItem = function(key, value) {
sessionStorage.setItem(key, value);
}
this.getItem = function(key) {
return sessionStorage.getItem(key);
}
}
var mySessionBroker = new ClientSession();
<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>
<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>