繁体   English   中英

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

[英]How to use asp.net sessions in javascript?

我在Asp.Net中有一个包含3页的表单,方法是使用下一个按钮转到下一页。 到目前为止,我在C#中所做的就是创建像这样的会话:

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

比我在该“下一步”按钮上执行的操作要多的是一个javascript函数,在该函数中,我试图像这样访问这些会话:

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

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

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

一些重要的注意事项:

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

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

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

不得已时,您可以在隐藏字段中设置值,以便稍后由javascript访问。 请参阅在JS中访问Asp.Net会话变量

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

您可以做一些事情:

  • 在您的页面(可能是从主页)中创建一个安装存根,该存根可以在javascript中设置变量,以便以后使用。
  • ashx处理程序加载文件,然后手动替换会话标签。
  • 将整个Javascript文件加载到页面中。 当文件很大时,这并不是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM