【问题标题】:how to pass session value from code behind to javascript如何将会话值从后面的代码传递给javascript
【发布时间】:2009-11-29 22:26:03
【问题描述】:

我已经创建了一个会话变量 Session["Background1"] = value;在我的一个函数后面的代码中,我想在我的 javascript 函数中检索这个值。

【问题讨论】:

  • 是否有任何特定点需要该值?就像点击一个按钮什么的!

标签: c# asp.net javascript


【解决方案1】:
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "SessionValue", "var sessionValue = '" + Session["Background1"] + "';", true);

【讨论】:

  • 我已经在代码隐藏函数中添加了这段代码,当我在 javascript 中检索它时,它说 sessionValue 未定义,我猜这个语句在 javascript 中定义了一个全局变量 sessionValue。在这种情况下,我们不需要显式定义这个变量
  • 代码 sn-p 的作用是生成以下代码(假设Session["Background1"] 返回red):<script type="text/javascript">var sessionValue = 'red';</script>。如果你得到一个未定义的错误,这可能是因为你的读取值的 javascript 是在渲染脚本之前执行的。查看呈现的 HTML 以确定这一点。一种解决方案可能是将读取此值的代码移动到 DOMReady 或页面加载事件侦听器。
【解决方案2】:

就我个人而言,我更喜欢以脚本方式进行。假设您的变量当前在 Javascript 中声明为:

var background1 = null; // TODO: Add value from session.

要从会话中添加值,您需要做的就是:

var background1 = '<%= Session["Background1"] %>';

当页面由 ASP.NET 输出时,&lt;%=%&gt; 之间的表达式被计算并写入页面,实际上变成了Response.Write。只要该成员在您的页面中处于公共或受保护级别,您就可以通过这种方式将其推送到您的 Javascript 中。

我发现这种方法比冗长的 ClientScriptManager 更容易使用。

【讨论】:

  • 当我在我的 javascript 函数中使用 alert(background) 时,我得到 作为警报消息..我猜它根本没有评估任何值,只是显示代码中使用的字符串
  • 这表明您的页面中没有对代码块进行评估,这本身就是另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2015-01-06
相关资源
最近更新 更多