2014-02-24 47 views
0

我想在MVC 4應用程序中訪問JavaScript/JQuery中的C#靜態變量。我可以通過以下語法訪問它。在更新後的值中訪問Java腳本中的C#靜態變量

var currentCulture = '@StaticCache.Culture'; //Returns en-GB 

的問題是,一旦頁面加載我能夠訪問正確的值,但假設我們做一個AJAX調用服務器和呼叫(在控制器)改變靜態變量的值。在Java腳本(Razor視圖)

var currentCulture = '@StaticCache.Culture'; //**Still returns en-GB instead of en-US** 

StaticCache.Culture="en-US"; 

再次讀取相同的靜態變量,這多少緩存變量。有什麼方法可以讀取最新值?

謝謝 最好的問候。

+0

您可以使用「Thread.CurrentThread.CurrentCulture = new CultureInfo(」en-GB「);」挽救語言。 –

+1

Web應用程序的靜態變量是**從來不是一個好主意,您應該將它變爲'Session'變量,或者取決於幾件事情,您可以使用MVC的ViewBag。 – jacqijvv

+0

即使會話變量獲得在視圖中緩存。我用Session替換了靜態變量,它在C#(控制器)中更新值,但在通過異步調用訪問時不會在View中更新它。整個頁面重新加載這兩種方法的作品。 – user2739418

回答

0

如果您使用的是AJAX,並且正在更新的內容需要在頁面上反映出來,那麼您應該在AJAX請求的響應中將其返回。

正如您發現的那樣,使用Razor語法只會在從服務器加載時更新這些值。沒有這兩種通信方式,客戶端無法知道該值已經改變了服務器端。

如果您不想部分重新加載頁面或將其返回到AJAX響應中,您可以查看像SignalR這樣的庫,它可以在客戶端和服務器之間保持實時通信通道(這會更新您的通過JavaScript實現的值。)

+0

謝謝CLandry。這就是我所做的。我們已經排除了重新加載選項,因爲它使儀表板的某些部分非常笨重。 – user2739418