2009-11-29 66 views

回答

3
ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "SessionValue", "var sessionValue = '" + Session["Background1"] + "';", true); 
+0

我在代码隐藏功能中添加了这段代码,当我在javascript中检索它时,它说sessionValue未定义,我想这个语句在javascript中定义了一个全局变量sessionValue。在这种情况下,我们不需要明确定义这个变量 – Mishigen 2009-11-29 10:42:53

+0

代码片断做的是产生下面的一段代码(假设'Session [“Background1”]'''red'):''。如果你得到一个未定义的错误,这可能是因为你的JavaScript读取的值,正在执行呈现的脚本之前。看看呈现的HTML来确定这一点。一种解决方案可能是将读取此值的代码移动到“DOMReady”或页面加载事件侦听器。 – 2009-11-29 12:49:16

1

就我个人而言,我更喜欢做它的脚本方式。假设你的变量是在你的Javascript目前声明:

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

从会话中添加值,所有你需要做的是这样的:

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

当页面输出通过ASP.NET,对<%=%>之间的表达式进行评估并写入页面,实际上成为Response.Write。只要该成员在公共或受保护级别的页面中可用,就可以用这种方式将它推入到Javascript中。

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

+0

当我在我的JavaScript函数中使用alert(background)时,我得到了<%= Session [“Background1”]%>作为警报消息..我猜这根本不是评估任何值,只是显示代码中使用的字符串 – Mishigen 2009-11-29 15:23:40

+0

这表明代码块并未在您的页面中进行评估,这是本身的另一个问题。 – 2009-11-29 20:14:42

相关问题