2012-11-15 40 views
0

可能重複:
How to share a variable between C# and JavaScript?如何在我的C#ASP.NET代碼和HTML/JavaScript之間共享一個變量?

我增強已在HTML兩個重要部門一個C#ASP.NET Web應用程序。兩個菜單選項可用於使一個隱藏,另一個隱藏。我們稱他們爲頁面一和頁面二。

問題是,頁面上的某些內容會導致回發,從而導致總刷新並強制默認設置爲Page One。此外,我們每五分鐘自動刷新一次以獲取新的頁面內容。如果用戶恰好在刷新發生時自動或因用戶點擊某些事件後回發而正在查看第二頁,則頁面自動返回到頁面一。

長期以來的解決方案是正確使用AJAX。現在我需要一種快速和骯髒的方式來記住刷新時用戶所在的頁面,然後在刷新時將其重新放回該頁面。

我可以在C#的服務器端創建一個變量,我可以在客戶端用JavaScript進行查詢嗎?從技術上講,如果我能以某種方式讓客戶端從頁面刷新到記憶刷新,服務器不需要知道哪個頁面div在瀏覽器中顯示。有沒有辦法做到這一點?

請原諒我,如果這看起來很基本。我有很多年的編程經驗(主要是MS-DOS和Unix世界中的C/C++),但在ASP.NET環境中並不多。

+0

你應該試着解釋你的問題的時候,你要什麼而不是這麼多的細節。它很難確定你確實需要什麼。 –

+0

服務器是否知道客戶端在哪個頁面上?或者只有JavaScript知道? – Bobson

+0

不,服務器不知道顯示哪個頁面。它每次發送兩個頁面的所有HTML。 (從技術上講,它是一個頁面,包含兩個不同的div,一個隱藏,另一個隱藏而另一個顯示。)客戶端的JavaScript隱藏一個div,並在每次點擊兩個鏈接之一(第一頁和第二頁)時顯示另一個div。 – DaveInATL

回答

1

如果使用元標記刷新<meta http-equiv="refresh" content="600"/>的頁面,那麼你就應該沿着傳遞一個選項卡/頁ID與網址:

<meta http-equiv="refresh" content="600;url=http://yourdomain.com/page.html?tab=<%= tab %>/"> 

還添加此屬性,當你發送任何回發到頁面。

現在,你只需要在服務器端讀取此屬性的值,並在元刷新標籤取代:

tab = Request.QueryString["tab"] 
+0

這似乎是一個有趣的解決方案,但細節又如何?我的JavaScript必須做什麼?或者,我的服務器端代碼是否必須詢問選項卡值,然後僅爲所選頁面發回正確的HTML? – DaveInATL

+1

@DaveInATL - 它可以通過在javascript中使用'<%= %>'標記來呈現已設置該標籤值的HTML。 – Bobson

+0

好的,謝謝Bobson。我想我已經使用asp:HiddenField與服務器端的Session State變量結合使用了一個解決方案。我會稍後嘗試發佈更多信息。 – DaveInATL

相關問題