2012-12-06 216 views
5

語境 我的系統有許多相關的實體,如用戶 - >客戶端 - >活動 - >等...ASP.NET MVC3維護導航歷史

每個實體都有一個「指數」視圖,使搜索,分頁和指向編輯/詳情/刪除的鏈接。在每個實體的「詳細信息」視圖中,我有用於顯示實體詳細信息(只讀)的標籤,以及用戶可以搜索的任何子實體的附加標籤頁,並且具有編輯/詳細信息/刪除的鏈接。這允許用戶在樹下「導航」(可以這麼說)。

問題 走下樹的工程,對待它回來了,我不知道。

例如,轉到tentant - >客戶端選項卡。按名稱搜索客戶端,然後單擊該客戶端的「詳細信息」鏈接。然後轉到客戶 - >廣告系列,搜索廣告系列,然後點擊廣告系列的「修改」。進行我的更改並提交表單。我可以通過「Campaign/Index」或「Client/Details - > Campaign選項卡」訪問此「編輯」視圖。那麼如何維護這個導航歷史?我正在使用的系統可以進入6個層次,我需要一些可以一直工作並再次備份的內容。如果我可以保存每個呼叫頁面狀態的詳細信息,例如。搜索條件,頁碼,活動標籤等,這將是理想的,但考慮到這一點的複雜性,我會很高興,只是回到正確的頁面和標籤。

最糟糕的情況是「用戶」,它可以通過4個不同的呼叫頁面進行訪問。

+0

你能否澄清一下,在你的用戶旅程中你會做頁面加載與更新標籤內容?例如。當你點擊客戶端的詳細信息鏈接時,是否會進行頁面加載以將客戶端信息帶到客戶端或者是否激活另一個選項卡? –

+0

嗨史蒂夫。當點擊一個「標籤」時,用戶將被帶到一個新頁面,該頁面「看上去」相同,但是標籤已激活。我編寫了一個自定義類來存儲每次點擊更新的歷史記錄,但是當用戶使用瀏覽器後退按鈕時,這種情況會失敗。錯過了這一事件,現在歷史已經過時了。 – P3BKAC

+0

目前我們正面臨同樣的問題。很想知道你是否找到了一種你很滿意的方法,如果是的話,它是什麼?我們正在調查使用包含導航歷史和基本狀態信息的cookie。 – Michael12345

回答

0

您可以不將URL存儲在(服務器端)數組中,並在遍歷樹時將其推入。當你回來時,你可以將它們逐個彈出陣列。如果用戶按下後退按鈕,則可以在正在執行的操作點進行交叉檢查,或在定時的JavaScript AJAX調用中將當前URL傳遞給服務器,這可能有助於保持陣列處於最新狀態。