将ASP.NET会话传递给jQuery



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

以下是我正在尝试的不太有效的东西:

因此,在Page_Load上,我将文本框设置为session(当会话存在时,它等于"True"(: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中过期。

您对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://learn.microsoft.com/en-us/dotnet/api/system.web.ui.control.clientidmode?view=netframework-4.8(

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

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

最新更新