1

I am able to store the session variable in aspx page using the following way :

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

now when i am trying to retrieve the Session["UserName"] i am unable to get that value in cs . For this i have a work around but want to know the reason why it is failing ?

Alternative way :

Declaring hidden Variable and Link button

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

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

So i am able to retrieve the value in onclick event in server side.

My question : So why i am unable to retrieve the session value in cs using the first method (i.e without assigning to hidden variable)

5
  • @Sac you mean on pastbacking ,its clearing the session value which was assigned ? Commented Aug 27, 2015 at 5:18
  • you can't set Session on client side. it is Server side State Management Technique.. You can set HiddenField Value and can get on Server Side .. codeproject.com/Questions/341573 Commented Aug 27, 2015 at 5:19
  • @Sac but in alert using alert('<%=Session["UserName"]%>') i am able to see the session value .why am i able to see it on client side ? Commented Aug 27, 2015 at 5:21
  • @sac No i able to get the value in all browsers Commented Aug 27, 2015 at 5:38
  • Let us continue this discussion in chat. Commented Aug 27, 2015 at 5:39

2 Answers 2

5

If you mean 'client side java script' then you can't, at least not directly. The session data is stored on the server and client side doesn't see it without communicating with server.

To access it can make an HTTP request and have server side modify or return the data.

Updated

Example

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

on aspPage.aspx

[WebMethod]
public static void Method(string value)
{
  sting val = value; // Do whatever you want to 
}
Sign up to request clarification or add additional context in comments.

2 Comments

can you give me any example how http request can be made
@Webruster added an example. Another way is using a Page Method to make a server side call from client side. Hope this will help
2

You can not set or use Session from javascript directly as it is a Server Side State Management Technique. You should use Hidden Field for that purpose.

Set javascript variable to Hidden Field and in code behind, get the Hidden Field value and set it to your desired Session.

You can achieve it by:
Java Script

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

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

Code Behind (CS)

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.