2009-11-29 72 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

相關問題