2013-04-05 51 views
0

我正在存儲一個會話變量,我將其用作各種數據訪問調用的參數。該變量在會話第一次創建時設置,並且可以由用戶根據他們有權訪問的資源進行更改。例如,當用戶首次登錄其默認會話值時可能會設置爲「1」。在頁面的頂部是他們有權訪問的所有選項的下拉列表,並更改此更改會話變量... 1,2,3,4 ...等等回發之間的會話變量不匹配

問題是,此會話變量下列原因之一造成的回發之間可能會發生變化:

  1. 會話超時,導致會話以1
  2. 用戶打開兩個標籤/瀏覽器窗口中的默認值重新本身,並更改其一個選項卡上,然後切換回其中使用「1」呈現的頁面的值

這會導致頁面上的控件變成「陳舊」,並且回發的行爲不正確。在其事件處理程序中依賴於會話變量的按鈕單擊事件可能不是「預期」事件,並且該接口具有誤導性。

我希望能夠做的是確定會話變量的值在回發之間是否發生了變化,以及是否重定向回到同一頁面,導致它使用新的會話變量值重新呈現,以及讓用戶清楚地指出每個回發實際上做了什麼。

任何想法?

回答

0

我最終什麼事做了添加HiddenField到我的母版,然後把這個後面的代碼:

 if (!Page.IsPostBack) 
     { 
      //SelectedID comes from masterpage property (Session variable) 
      hiddenField.Value = SelectedID.ToString(); 

      ... 
     } 
     else 
     { 
      int selectedId = Int32.Parse(hiddenField.Value); 
      if (selectedId != SelectedID) 
      { 
       Response.Redirect(Request.RawUrl); 
      } 
     } 
0

爲什麼不使用cookie來存儲該變量?我認爲你的兩個問題都可以解決。

+0

我不相信這會解決多個標籤/瀏覽器窗口的問題,因爲第一cookie會由一個選項卡生成,然後由另一個選項卡更改,然後原始選項卡仍然會顯示爲使用原始Cookie進行呈現,對嗎? – 2013-04-08 16:01:48