1

次の方法を使用して、セッション変数を 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でセッション値を取得できないのはなぜですか(つまり、隠し変数に割り当てずに)

4

2 に答える 2

5

「クライアント側の 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 
}
于 2015-08-27T05:25:56.553 に答える
2

セッションはサーバー側の状態管理手法であるため、javascript から直接設定または使用することはできません。そのためには、隠しフィールドを使用する必要があります。

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 ; 
}
于 2015-08-27T06:07:56.990 に答える