2013-03-12 26 views
3

我想直接從一個視圖數據傳遞到另一個在以下兩個情況:如何使用JavaScript在MVC3中的視圖之間保存數據?

  1. 我們的用戶都可以停靠和取消停靠一個工具欄,是持久thoughout我們的應用程序。我希望在用戶導航到另一個頁面時保存此狀態。工具欄使用jQuery停靠和取消停靠。

  2. 在某些情況下,來自AJAX調用的成功響應之後,我們有整頁刷新或重定向。我們希望在刷新/重定向後向用戶顯示通知(例如,您的操作成功)。

我最初的想法是用餅乾,特別是使用jquery-cookie,但後來我想知道如何使用Session[]變量。鑑於我們的JavaScript將在外部文件中,我不知道這是否可能,如果是這樣,它只會使問題複雜化?

+3

在返回ajax響應之前,有沒有在服務器端設置會話數據的原因? – Justin 2013-03-12 13:45:10

+0

@Justin我在考慮可能存在問題的唯一原因是我們的'$(document).ready()'在外部JavaScript文件中,這會在查詢會話數據時導致問題。我想保持這種外部化,而不是利用多個'$(document).ready()' – garethdn 2013-03-12 14:37:43

+0

如果你使用'Session',你不會在乎'$(document).ready()'的位置。 。 「會話」駐留在服務器上,因此您必須在服務器上讀/寫它。例如,您在返回ajax響應之前設置了一些會話數據。然後,稍後...您需要獲取一些數據,您將不得不返回服務器以讀取該數據(另一個Ajax請求)。 – Justin 2013-03-12 14:56:04

回答

0

你看過Lawnchair嗎?

http://brian.io/lawnchair/

聽起來很像你所需要的。它用於在頁面間持久保存客戶端數據。

+0

這看起來與jQuery Cookie插件非常相似?如果這是我決定處理這個問題的方式,是否有任何理由使用Lawnchair而不是jQuery Cookie? – garethdn 2013-03-12 14:02:42

0

我的應用程序要求我在會話中存儲許多數據元素。預先選擇存儲機制(主要是因爲管理層無法決定),我使用persistence.js編寫了我的應用程序。

我後來能夠選擇精確的存儲機制,對代碼的影響最小。

0

我面臨同樣類型的問題。 解決方法我使用jQuery cookie並存儲隱藏面板ID。 並檢查jQuery的$(document).ready(function(){});中的哪些面板處於隱藏狀態,並在做出display:none之後的Cookie。因此在回發之後Cookie仍然存在並且面板隱藏起來。 它解決了我的問題。

0

您可以通過簡單地通過隱藏字段來回發送工具欄狀態信息(從MVC視圖到控制器,而不是從控制器到MVC視圖)來完成此操作。

相關問題