2012-02-15 78 views
1

我正在嘗試使用JavaScript,但可能有更簡單/更好的方法。從客戶端腳本中檢索.NET會話變量

我有一個.NET應用程序,設置一個會話變量在後面的代碼。我在網站上也有HTML文件,它們是動態創建的,並且是靜態的,但應該能夠訪問這些會話(通過JavaScript很可能)。也就是說,如果沒有會話集,我希望HTML頁面重定向回主頁面.aspx頁面。

用下面的,它總是給我一個空字符串,即使該會議被認爲是在.aspx頁,任何方式來解決這個?

<script type="text/javascript"> 
    function doSomething(){ 
     var someSession = '<%= Session("user") %>'; 
     alert(someSession) 
    } 
</script> 
+0

,你需要通過ASP.NET通過一個頁面訪問它們或您無法訪問HTML自變量服務。既然你想在JavaScript中使用它們,你可能會考慮編寫一個服務來從服務器拉出用戶會話變量。 – Zachary 2012-02-15 17:03:01

回答

1

靜態html頁面不執行任何服務器代碼。他們只是按原樣提供服務。

<%= Session("user") %> 

根據定義涉及執行服務器端代碼。這就是爲什麼它在aspx頁面而不是html中工作的原因。

解決這個問題的方法是轉換成HTML頁面ASPX頁面,或使用一個Ajax查詢回調到服務器,並從Web服務或其他方法的會話信息。

+0

我嘗試將代碼放在.asp頁面中,仍然得到相同的結果。那裏有任何想法?從TEST.ASP:' \t <腳本類型= 「文本/ JavaScript的」> \t \t函數doSomething的(){ \t \t \t變種someSession = '<%=會話( 「用戶」)%>'; \t \t \t警報(someSession) \t \t} \t <身體的onload = 「DoSomething的();」> ' – r584 2012-02-15 16:53:33

+0

我想你的建議,但爲@ r584說,這是行不通的! – Simone 2015-12-02 11:24:20

0

如已經表示,它必須是活動頁面,正確的代碼是:

var sessionValue = '<%= Session["user"] %>';