2010-07-15 73 views
2

我是新的ASP.net,我試圖保存重定向一些文本框的狀態。我有一個與鑽取的儀表板界面。主儀表板頁面上顯示的信息具有日期範圍選項(適用於開始日期和結束日期的文本框),我需要保存用戶選擇的日期範圍。我知道我可以將信息放入要重定向到的頁面中使用的會話變量,但是當我點擊向下鑽取頁面上的「返回」按鈕時,它會返回主儀表板頁面,並且文本框值丟失。我也嘗試保存視圖狀態,但無法讓它工作。解決這個問題的最好方法是什麼?asp.net保存重定向文本框

編輯:萬一它很重要,我實際上使用jQuery $(location).attr('href', url);做重定向,因爲我使用的一些圖表對象覆蓋IE或HTML超鏈接。

+0

您是否可以從原始頁面的Page_Load中的會話中讀取,以防從另一個頁面重定向回來?我相信這是儀表板頁面。無論何時加載,請檢查以前輸入的文本框值。 – DOK 2010-07-15 21:59:22

回答

1

你在正確的軌道上。

在您的重定向頁面上,您正在檢查會話變量,對吧?

爲什麼不在原始頁面上檢查它呢?

即: 原始頁面的Onload:

IF NOT String.isnullorempty(Session("date")) THEN 
    me.start_date.selectedvalue = Session("date") 
END IF 
+0

編輯:會話數據現在持續通過重定向。例如,如果我設置var = Session [「txtEndDate」],它會很好。然而,當我嘗試txtEndDate.Text = Session [「txtEndDate」]或txtEndDate = Session [「txtEndDate」]或txtEndDate.Text =(字符串)會話[「txtEndDate」]我得到一個錯誤。所以我現在的問題是如何從會話變量恢復日期。 – 2010-07-15 22:18:15

+0

如果你想填充一個文本框,那麼這應該工作: me.txtEndDate.text = Session(「txtEndDate」) 雖然這真的是一個基本的答案 - 錯誤消息說什麼? – dave 2010-07-15 22:55:25

+0

我解決了它與會議[「txtEndDate」] = txtEndDate.Text,txtEndDate.Text =(字符串)會議[「txtEndDate」] – 2010-07-16 15:00:27

0

所以澄清你的問題:你需要堅持的日期文本框的選擇值,當用戶導航回頁面。

ViewState無法正常工作的原因是因爲您已從頁面導航。 ViewState通過將其作爲基礎64編碼數據插入到頁面中來傳輸或「記住」,所以只要您離開頁面,它就會永遠消失。

你需要做的是將數據保存到會話中,就像你一樣。然後,在儀表板頁面的Page.Load事件處理程序中,檢查Session中保存的信息是否存在,如果存在,則將其填充到文本框中,否則使用默認值。

如果你打算使用會話頁面之間進行通信值,那麼我會建議你使用靜態常量爲重點,以每一塊信息,像這樣:

public class MySessionKeys 
{ 
    public static string DateStarted = Guid.NewGuid().ToString(); 

    public static string DateFinished = Guid.NewGuid().ToString(); 
} 

,並在aspx頁面:

protected void Page_Loaded(object sender, EventArgs e) 
{ 
    Session[MySessionKeys.DateStarted] = myDateStartedTextBox.Text; 
} 
+0

感謝您的輸入。這看起來很不錯。我有我的會話變量通過重定向。如何將值恢復到文本框? – 2010-07-15 22:36:21