首页 > 解决方案 > 将 ASP.NET 会话传递给 jQuery

问题描述

我正在使用 asp.net、vb.net 和 jquery。我需要查看我的会话是否存在于 jQuery 中。我知道我不能在 jQuery 中使用会话,因为 JavaScript 是客户端,而会话是服务器端。所以,我认为解决方法可能是将会话信息存储在标签中。

这是我正在尝试但不太有效的方法:

所以在 Page_Load 上,我将文本框设置为会话(当会话存在时等于“真”):LblSession.Text = Session("MySession")

同样在 Page_Load 上,如果会话过期(设置为 15 分钟),那么我希望标签将会话更新为 null / false。

If Not Session("MySession") Then LblSession.Text = Session("MySession")

但是,当我的会话结束时,此标签不会更新为会话是否存在。

在我的 jQuery 上,我获得了会话的值(如果存在,则为 True,否则为 false 或 null):var mySession = $("#LblSession").text();

//Check to see if the session is true
if (mySession == "True") {
    'do something if session exists'
} else {
    'do something if session does not exist'
}

这是我的最终目标,能够查看会话是否存在或者它是否从我的 jQuery 中过期。

标签: javascriptjqueryasp.netvb.netsession

解决方案


您对 ID html 标记的 Javascript 调用可能是错误的,请检查 ID 控件是否存在:

<asp:Label runat="server" ID="LblSession"></asp:Label>
// render as:
<span id="[if inside Masterpage ex. ContentMain_]LblSession"></span>
$("#LblSession").text();

检查 web.config 的配置,标签 clientIDMode 的值,ID 取决于此设置和页面结构,例如,如果您有母版页和容器控件。检查 html 生成的代码,以获取呈现的 html 控件的客户端 ID 标记。

<pages clientIDMode="Predictable"></pages>

更多信息:(https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.control.clientidmode?view=netframework-4.8

最好使用隐藏字段,呈现为隐藏输入:(https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.hiddenfield?view=netframework-4.8

<asp:HiddenField id="HiddenField1" runat="server" value="1"/>

推荐阅读