Access Session variables in JavaScript

2019-04-26 16:27发布

问题:

I wanted to access a session variable in javascript in asp.net mvc application. I have found a way to do it in aspx view engine but not in razor.

Please tell me a way to access the session variables

回答1:

You can do it this way for a String variable:

<script type="text/javascript">
    var someSessionVariable = '@Session["SomeSessionVariable"]';
</script>

Or like this if it's numeric:

<script type="text/javascript">
    var someSessionVariable = @Session["SomeSessionVariable"];
</script>

This is really not a very clean approach though, and requires inline JavaScript rather than using script files. Be careful not to get carried away with this.



回答2:

I personally like the data attribute pattern.

In your Razor code:

<div id="myDiv" data-value="@Request.RequestContext.HttpContext.Session["someKey"]"></div>

In your javascript:

var value = $("#myDiv").data('value');


回答3:

For google searchers,

In addition, If you want to access the session variable in external .js file you can simply do like this,

------ SOME HTML PAGE ------

//Scripts below Html page
<script>   
    //Variable you want to access
    var mySessionVariable = '@Session["mySessionVariable"]';
</script>

// Load External Javascript file
<script src="~/scripts/MyScripts/NewFile.js"></script> 

Inside NewFile.js

$(document).ready(function () {
    alert(mySessionVariable);
});


回答4:

In my asp.net I am not getting the result by

     <script type="text/javascript">
          var someSessionVariable = '@Session["SomeSessionVariable"]';
     </script>

But I get the answer by below code,

<script type="text/javascript">

     var yourVariable = '<%= Session["SessionKey"] %>';

</script>