簡體   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