使用JavaScript访问ASP.net会话数据的最佳方法是什么?

时间:2009-01-07 21:46:06

标签: asp.net javascript session

如何使ASP.net会话数据可用于JavaScript方法?当我用Google搜索时,我找到了this链接。任何人都有一个更好的技巧,不使用ScriptManager?

6 个答案:

答案 0 :(得分:3)

如果放弃ScriptManager是你的目标,暴露页面方法仍然是一个不错的选择,只需使用不依赖于ScriptManager js库的javascript。

我喜欢链接页面中提出的解决方案,但它可能过于宽泛。也许您想为要允许访问的任何/所有会话项创建强类型和受控的PageMethod。这样你就不会意外地访问某些秘密会话值。

另外,我认为您需要使用

标记PageMethod

VB

WebMethod(EnableSession:=True)

C#

WebMethod(true)

因为我认为EnableSession默认情况下不启用。

答案 1 :(得分:2)

会话的目的是隐藏客户端的详细信息。听起来像你应该将它转换为使用cookie,这显然是通过javascript检索的微不足道。

答案 2 :(得分:1)

你必须以某种方式将它放入页面。使用隐藏表单字段是一种方法。使用类似你的链接的网络方法是一种更复杂的方法,它为你提供了一些ajax权力。

如果您实际上不需要从服务器更新此值,除了回发后,您可以使用隐藏的输入控件HtmlInputHidden

答案 3 :(得分:0)

对实现IRequiresSessionState

的ASHX的常规AJAX调用

为什么你想要呢?

答案 4 :(得分:0)

老实说,ScriptManager方法看起来很简单。滚动你自己的解决方案需要服务器端的HttpHandler和Ajax调用,在这种情况下这似乎不值得。

答案 5 :(得分:0)

我可以看到两种选择:

  1. 生成您希望JavaScript有权访问的会话数据的JSON对象。在初始页面生成期间或作为JSON回调的结果将其发送到浏览器。
  2. 创建一个可以通过AJAX调用的ASPX页面,该页面将返回具有给定键的会话变量的值。
  3. #2可能是ScripManager代码所包含的内容,你应该只是使用它。但是我要小心决定你想要去客户端的会话数据,我会使用白名单只返回我实际需要转到客户端的会话数据。