2011-03-30 80 views
2

ASP.NET 4.0的Webform網站返回前一頁(保持視圖狀態)與ASP.NET UpdatePanel控件

母版頁: 左側板(導航菜單用途):使用UpdatePanel控件(AJAX),所以選擇時,新的菜單,整個頁面不會重新加載。只有內容部分將被更新。

我的問題是 - 我想能夠使用瀏覽器後退按鈕返回到上一個菜單(保存表格狀態)。但是,在查看視圖狀態時,它始終是相同的。有沒有辦法做到這一點?謝謝。

回答

1

我想一個解決辦法是,當用戶從菜單中選擇一個菜單項時,將該選擇放入會話變量和頁面加載中。然後,當用戶點擊瀏覽器後退按鈕時,您可以在頁面加載中設置菜單,因爲您的會話變量中有值。

+0

這聽起來不錯。但是,是否也可以保存視圖狀態?所以回頭時,所有的表格都會保留下來。 – Stan 2011-03-30 06:28:48

+1

@Stan;我不這麼認爲,但是如果你真的想存儲viewstate,那麼在asp.net 4.0中有一個選項,ViewState可以存儲在Session State中。 – 2011-03-30 07:04:19

+0

@MuhammadAkhtar它也可以使用以前版本的ASP.NET來完成(也就是說,可以使用自定義的ViewState提供程序)。 – 2012-06-21 00:40:00

0

pst指的是「跨頁面發佈」。

在您的源頁面上,您需要將asp按鈕的postbackurl設置爲您的目標頁面url。

在目標頁面的c#onload方法中,將page.previouspage設置爲源頁面。檢查前一頁的帖子是否是跨頁面帖子。

如果爲true,則獲取zource頁面的viewstate。

如何從目標頁面訪問源頁面的viewstate?在轉到目標頁面之前,將源頁面的視圖狀態保存在源頁面中。將視圖狀態保存在源頁面上的一個asp隱藏變量中,然後使用previouspage.findcontrol(「變量名稱」)將其置於目標頁面中。

獲取源頁面的viewstate後,將其保存在目標頁面上的asp隱藏變量中。

當您想要返回到源頁面時,您將以某種方式反向操作上述所有內容。

「返回上一頁」鏈接按鈕將使用postbackurl值的源頁面url。

在源頁面的onload c#方法中,將page.previouspage url設置爲目標頁面的url。檢查上一頁的帖子是否是跨頁面帖子。

如果爲true,則在源頁面(從目標頁面返回後)使用previouspage.findcontrol(「savedSourcePageViewstate」)來獲取源頁面的保存視圖狀態。

我不確定如何將源頁面的viewstate更改爲保存的viewstate。您可能實際上必須在目標頁面的backttopreviouspage按鈕的點擊處理程序中執行此操作。

我正在開發這個過程,現在正在開發一個項目。

當我得到它的工作時,我將使用代碼示例爲此創建一個完整的演練,並將鏈接發佈到此處。

但是,我已經開始從目標頁面中的源頁面獲取數據的跨頁面發佈過程。

它是安全的,並且是我遇到過從asp.net webforms應用程序中獲取數據從一個頁面到另一個頁面的最佳方法。