如何将会话值从 aspx(使用 javascript 存储)传递到 cs

How to pass session value from aspx (stored using javascript) to cs

我可以使用以下方式将会话变量存储在 aspx 页面中:

  $(document).ready(function () {
            var userName = "webruster";
            '<%Session["UserName"] = "' + userName + '"; %>';
           alert('<%=Session["UserName"]%>');
        });

现在,当我尝试检索 Session["UserName"] 时,我无法在 cs 中获取该值。为此,我有一个解决方法,但想知道它失败的原因?

替代方法:

声明隐藏变量和 Link 按钮

$(document).ready(function () {
            var userName = "webruster";
            '<%Session["UserName"] = "' + userName + '"; %>';
            var x = document.getElementById("<%=hdnsessionvalue.ClientID %>");
            x.value = '<%=Session["UserName"] %>';

           document.getElementById('<%= lnkButton1.ClientID %>').click();
        });

所以我能够在服务器端检索 onclick 事件中的值。

我的问题: 那么为什么我无法使用第一种方法在 cs 中检索会话值(即不分配给隐藏变量)

如果你的意思是'client side java script'那么你不能,至少不能直接。会话数据存储在服务器上,客户端在不与服务器通信的情况下看不到它。

要访问它可以发出 HTTP 请求并让服务器端修改或 return 数据。

已更新

例子

<script>
       // get the variable
       var data = JSON.Stringify(yourVariable);

       // Make the ajax call
       $.ajax({
         type: "POST",
         url: "aspPage.aspx/Method", //method we will call
         contentType: "application/json; charset=utf-8",
         data: {value: data }, //assign the 'data' values to 'value', its the data you want to send 
         dataType: "json",
         success: function (result) {
             alert('its working');               
         },
         error: function (result) {
             alert('something wrong');
         }
     });
  </script>

在 aspPage.aspx

[WebMethod]
public static void Method(string value)
{
  sting val = value; // Do whatever you want to 
}

您不能直接从 javascript 设置或使用会话,因为它是一种服务器端状态管理技术。为此,您应该使用隐藏字段。

将 javascript 变量设置为隐藏字段,并在后面的代码中获取隐藏字段值并将其设置为所需的会话。

您可以通过以下方式实现:
Java 脚本

$(document).ready(function () {
    var userName = "webruster";
    var x = document.getElementById("<%=hdnsessionvalue.ClientID %>");
    x.value = userName;

    document.getElementById('<%= lnkButton1.ClientID %>').click();
});

代码隐藏 (CS)

protected void lnkButton1_Click(object sender, EventArgs e) 
{ 
    string test = hdnsessionvalue.Value; 
    Session["UserName"] = test ; 
}