当前位置:  开发笔记 > 编程语言 > 正文

如何从ASP.NET变量中提供JavaScript变量数据?

如何解决《如何从ASP.NET变量中提供JavaScript变量数据?》经验,为你挑选了4个好方法。

我为LMS创建了一个SCORM API,现在我正在使用硬编码的userID和courseID变量(引用数据库中的东西的变量).我需要传递真实的userID和courseID,而不是使用硬编码的.我知道userID存储在会话中,courseID从启动页面传递.

如何将这些内容导入JavaScript中,以便将其包含在我对处理SCORM调用的.ashx的调用中?



1> tvanfosson..:

大概 最好 最容易将它们公开为页面属性(如果在每个页面上使用,则为母版页),并通过页面指令引用它们.

 

然后在Page_Load(或主页的Page_Load)中设置值.

  public void Page_Load( object source, EventArgs e )
  {

        UserID = Session["userID"];
        CourseID = Session["courseID"];
        ...
  }


不要忘记嵌入的Javascript字符串需要被转义,否则字符串中的反斜杠,引号等会破坏客户端的Javascript.
我处理的系统中的许多用户ID都是由sysadmin输入的字符串.这就是o'brien这个名字成为一个非常好的测试案例的原因.通常最好采取防御措施,而不是假设您嵌入的变量不是Javascript字符串安全的.
@andynormancx - 注意到,但是id字段很可能是一个数值而不是问题.

2> andynormancx..:

这里的所有答案都表明了类似的东西

var userID = '<%= UserID %>';

如果您嵌入的变量可以包含任意字符串数据,则都会遗漏一些重要内容.嵌入的字符串数据需要进行转义,这样如果它包含反斜杠,引号或不可打印的字符,则不会导致Javascript出错.

Rick Strahl对此处所需的转义代码有一些建议.使用Rick的代码,嵌入变量将如下所示:

var userId = <%= EncodeJsString(UserID) %>;

请注意,现在没有引号,Rick的代码用引号包装转义字符串.


嗯?如何在客户端进行此项工作?在将文本嵌入javascript变量之前,需要对文本进行转义.

3> David Hammon..:

@ tvanfosson的答案是我过去通常如何做到这一点,但只是想想一些更优雅的东西.以为我会把它扔出去.

您可以在代码隐藏中设置HashTable并初始化JavaScriptSerializer:

Protected json As New System.Web.Script.Serialization.JavaScriptSerializer
Protected jsvars As New Hashtable

然后像这样设置变量:

jsvars.Add("name", "value")

然后在页面中将变量序列化为JavaScript:


这可确保所有变量都被正确转义,并且如果您需要处理大量变量,还可以最小化代码.



4> Andrew Hare..:

本文介绍最实用的解决方案 几个实用的解决方案来解决您的问题.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有