繁体   English   中英

如何将会话值从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中获取该值。 为此,我有一个解决方法,但想知道它失败的原因吗?

替代方式:

声明隐藏的变量和链接按钮

$(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中检索会话值(即,没有分配给隐藏变量)

如果您的意思是“客户端Java脚本”,那么您至少不能直接这样做。 会话数据存储在服务器上,并且如果不与服务器通信,客户端将看不到会话数据。

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

更新

<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变量设置为Hidden Field,然后在后面的代码中,获取Hidden Field值,并将其设置为所需的Session。

您可以通过以下方法实现它:
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 ; 
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM