如何在JavaScript中使用asp.net会话?

时间:2016-03-16 19:31:09

标签: javascript c# asp.net

我在Asp.Net上有一个表格,有3页,下一页是下一页按钮。 到目前为止我在C#中所做的是我创建了这样的会话:

Session["FirstName"] = txtFirst.Text;
Session["LastName"] = txtLast.Text;

我所做的就是在Next按钮上我调用了一个javascript函数,我尝试访问这些会话:

<script type="text/javascript">
    var fn = '<%=Session["FirstName"]%>';
    var ln = '<%=Session["LastName"]%>';
</script> 

但是它不起作用,当我调试它时,它正是我们在引号内输入的内容:http://prntscr.com/ag3wdo

3 个答案:

答案 0 :(得分:1)

该语法:<%=Session["FirstName"]%>是一种特殊的asp.net语法。它需要在服务器上处理,在那里它被该会话值的值替换。只有这样才能将其发送到浏览器。

一些重要的注释:

  • 浏览器不理解<%= ... %>语法
  • 服务器需要处理它,因此它必须位于已处理的文件中,如.aspx或.ascx
  • javascript文件(.js)按原样发送,无需额外处理,因此此语法不起作用。

答案 1 :(得分:0)

您需要将该脚本直接放在aspx页面(而不是.js文件)中,或者您需要在aspx页面中的脚本中设置变量的值。

或者,你可以发送要由.NET引擎评估的js文件(创建一个处理程序),但这不是一件好事,作为一般规则,因为它会处理所有js文件并在你的地方增加开销不需要它。

最后,您可以在隐藏字段中设置值,然后通过javascript访问。见Accessing Asp.Net Session variables in JS

答案 2 :(得分:0)

这些代码很可能位于.js文件中,而不是aspxascx页面。这些标记仅适用于这些扩展。 Javascript文件按原样发送。

你可以做一些事情:

  • 在您的页面中创建一个设置存根,可能来自您的母版页,它在javascript中设置变量,以便您以后可以使用它们。
  • ashx处理程序加载文件并手动替换会话标记。
  • 在页面中加载整个Javascript文件。当文件很大时,这不是一个好主意。