【问题标题】:How to pass session value from aspx (stored using javascript) to cs如何将会话值从 aspx(使用 javascript 存储)传递到 cs
【发布时间】:2015-12-06 08:36:25
【问题描述】:

我可以使用以下方式将会话变量存储在 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 中的会话值(即没有分配给隐藏变量)

【问题讨论】:

  • @Sac 你的意思是过去的备份,它清除了分配的会话值?
  • 您不能在客户端设置会话。它是服务器端状态管理技术..您可以设置 HiddenField 值并可以在服务器端..codeproject.com/Questions/341573
  • @Sac 但在使用alert('&lt;%=Session["UserName"]%&gt;') 发出警报时我能够看到会话值。为什么我能够在客户端看到它?
  • @sac 否,我无法在所有浏览器中获取值

标签: javascript c# asp.net session asplinkbutton


【解决方案1】:

如果您的意思是“客户端 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 
}

【讨论】:

  • 你能给我举个例子如何发出http请求吗
  • @Webruster 添加了一个示例。另一种方法是使用页面方法从客户端进行服务器端调用。希望这会有所帮助
【解决方案2】:

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

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

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

$(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 ; 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    相关资源
    最近更新 更多