2011-09-27 72 views
4

唯一性數據I有一個具有取決於哪個公司用戶當前選擇的(上側欄的下拉框目前用於設置會話變量)不同的數據組的應用程序。導軌 - 爲每個打開的選項卡/窗口

我的客戶已表示有同時從一個單一的瀏覽器上的多個不同的數據集工作能力的願望。因此,會議不再削減它。

谷歌搜索似乎與每個請求一起暗示獲取或交的數據是這樣的,這是我的第一個猜測。有沒有更好的/更容易/軌道的方式來實現這一目標?

回答

4

你有幾個選擇這裏,但正如你指出的,session系統將不會爲你工作,因爲它是通過同一瀏覽器的所有實例全球。

標準方法是在URL中添加一些標識要執行的上下文的內容。這可以像/companyx/users這樣的前綴一樣簡單,而不是/users,您可以在其中獲取公司slu and並將其用作範圍。通常情況下,您可以通過讓控制器基類爲您執行此操作來完成此操作,然後從所有其他受同樣方式影響的控制器繼承該操作。

另一種方法是將公司標識組件從URL移到主機名。這在軟件即服務提供商中很常見,因爲它可以使應用程序更加容易分割。而不是myapp.com/companyx/users你會有companyx.myapp.com/users。這具有保留現有URL結構的優勢,並且當您擁有大量數據時,您可以將您的應用程序按客戶劃分到不同的數據庫中,而不會讓您感到頭疼。

您發現使用GET令牌或POST場是不會很好地工作標記所有URL的答案。首先,它很麻煩,其次,每個鏈接都是POST的站點非常煩人,因爲它可以使用後退按鈕進行導航或強制重新加載麻煩。它已經看到使用的原因是因爲開箱即用的PHP和ASP沒有支持路線,所以人們不得不去做。

+1

謝謝。我會建議我們將公司的子彈移入主機名。這將適合我們未來的需求比獲取/發佈數據更好。我知道必須有更好的方式! – Roganartu

1

您可以創建一個臨時數據庫表,或使用一個鍵值數據庫,並存儲在你需要它的所有數據。 uniq密鑰可以用作窗口ID。此外,您必須將此窗口ID添加到每個鏈接。因此,您可以從數據庫中接收每個瀏覽器選項卡的相應數據,並將其存儲在會話中,對象...

如果您有一個對象,可以說@data,可以將它存儲在數據庫中Marshal.dump,然後用Marshal.load取回。

相關問題