【发布时间】:2009-11-29 22:26:03
【问题描述】:
我已经创建了一个会话变量 Session["Background1"] = value;在我的一个函数后面的代码中,我想在我的 javascript 函数中检索这个值。
【问题讨论】:
-
是否有任何特定点需要该值?就像点击一个按钮什么的!
标签: c# asp.net javascript
我已经创建了一个会话变量 Session["Background1"] = value;在我的一个函数后面的代码中,我想在我的 javascript 函数中检索这个值。
【问题讨论】:
标签: c# asp.net javascript
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "SessionValue", "var sessionValue = '" + Session["Background1"] + "';", true);
【讨论】:
Session["Background1"] 返回red):<script type="text/javascript">var sessionValue = 'red';</script>。如果你得到一个未定义的错误,这可能是因为你的读取值的 javascript 是在渲染脚本之前执行的。查看呈现的 HTML 以确定这一点。一种解决方案可能是将读取此值的代码移动到 DOMReady 或页面加载事件侦听器。
就我个人而言,我更喜欢以脚本方式进行。假设您的变量当前在 Javascript 中声明为:
var background1 = null; // TODO: Add value from session.
要从会话中添加值,您需要做的就是:
var background1 = '<%= Session["Background1"] %>';
当页面由 ASP.NET 输出时,<%= 和%> 之间的表达式被计算并写入页面,实际上变成了Response.Write。只要该成员在您的页面中处于公共或受保护级别,您就可以通过这种方式将其推送到您的 Javascript 中。
我发现这种方法比冗长的 ClientScriptManager 更容易使用。
【讨论】: