使用jquery

时间:2019-01-18 01:47:13

标签: c# jquery asp.net vb.net

我有一个img按钮。单击它时,我使用jquery设置了会话值。但是我无法获得有关vb代码的会话。我的过程类似于用户单击图像后,设置会话。当用户打开弹出页面并返回页面时。我需要检查会话以执行某些操作。但是在vb代码中,会话没有任何作用。有人可以告诉我怎么做吗。

下面的代码调用该函数:

<asp:Image ID="img" runat="server" onclick="SetSession(hdID);" ImageUrl="pic_bottle.gif" />

jquery脚本:

function SetSession(hdID) {
    var hd = $('#' + hdID);
    var hdValue = hd.val();
    if (hdValue == "s") {
        $.session.set('UpdateProdOrder', -1);
    }
    else {
        var hdProdID = $('#hdProdID').val();
        $.session.set("UpdateProdOrder", hdProdID);
    }
    alert($.session.get("UpdateProdOrder"));
}

后面的vb代码永远不会获得会话

If Not Session("UpdateProdOrder") Is Nothing Then
    'do something
    updateOrder() 
end if

2 个答案:

答案 0 :(得分:0)

localStorage和sessionStorage属性允许在Web浏览器中保存键/值对。

sessionStorage对象仅存储一个会话的数据(关闭浏览器选项卡时,该数据将被删除)。

这些值在客户端维护,但是您尝试在服务器端检索它。会话变量是服务器端的

解决方案:

方法1

您必须有一个ajax调用才能与服务器对话以进行设置。 please check it out

方法2

使用Javascrip分配ASP.NET会话变量 t。

<script type="text/javascript">
    function SetSession(hdID)
    {
        var hd = $('#' + hdID);
            var hdValue = hd.val();

      if (hdValue == "s") {

  '<%Session["UpdateProdOrder"] = "' + -1+ '"; %>';
            }
            else {
                var hdProdID = $('#hdProdID').val();

 '<%Session["UpdateProdOrder"] = "' + hdProdID+ '"; %>';
            }
         alert('<%=Session["UpdateProdOrder"] %>');
    }
    </script>

使用Javascript访问ASP.NET会话变量

<script type="text/javascript">
    function GetSession()
    {

        var updateProdOrder= '<%= Session["UpdateProdOrder"] %>';
        alert(updateProdOrder);
    }
</script>

答案 1 :(得分:0)

您不能直接使用javascript更改服务器端Session对象。您需要以某种方式将其发送到服务器。这可以通过将图像更改为ImageButton并执行PostBack来修改Session对象来完成。但是由于您似乎在hdID中有一些数据。您不能仅通过ImageButton将其发送到服务器,而是需要HiddenField

<asp:ImageButton ID="ImageButton1" runat="server" OnClientClick="SetSession(hdID);" 
    ImageUrl="pic_bottle.gif" OnClick="ImageButton1_Click" />

<asp:HiddenField ID="HiddenField1" runat="server" />

<script type="text/javascript">
    var hdID = 'test';

    function SetSession(hdID) {
        $('#<%= HiddenField1.ClientID %>').val(hdID);
    }
</script>

然后在

后面的代码中
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
    Session["UpdateProdOrder"] = HiddenField1.Value;

    Label1.Text = string.Format("Session value is now '{0}'", Session["UpdateProdOrder"]);
}

您也可以在没有JavaScript SetSession的情况下执行此操作,但这取决于在页面的其他部分使用hdID的时间和地点。