2014-03-31 21 views
0

夥計們我試圖將變量從一個頁面傳遞給另一個頁面。在搜索時,我發現使用QueryString方法或使用Session來傳遞變量。我不喜歡QueryString方法,因爲它顯示URL中的數據可以修改,所以我參加了會議。使用Session將動態值從一個ASP頁面傳遞到另一個頁面?

現在我在asp中添加了一個DataGridView,它在每行都有一個按鈕。點擊這個按鈕後,將創建一個會話變量,其中點擊了按鈕的行的第一列的值,然後它重定向到我正在使用此會話變量的另一個頁面。

現在的問題是,當我使用Visual Studio調試器,這工作正常,並且變量值根據按鈕單擊不斷變化。但是,一旦我將該網站上傳到主機,首次單擊DataGridView中的按鈕時會創建該變量,但當我在不同行中再次按下按鈕時,變量值不會更改。它保持不變,除非我在重定向頁面上的瀏覽器中按F5,只有這樣值纔會更新。

我認爲值存儲在瀏覽器的緩存中,直到我強制刷新頁面纔會更改。我該怎麼做才能解決這個問題?除了上面提到的兩種方法外,還有其他方法可以傳遞變量嗎?

代碼來創建會話和重定向:檢索會議

GridDataItem item = (GridDataItem)e.Item; 
string ticketid = item["ID"].Text; 
Session["viewID"] = ticketid; 
Response.Redirect("View.aspx"); 

代碼:

String s = Session["viewID"] as String; 

我也想避免使用cookie,很多用戶都在這麼使用Cookie的瀏覽器禁用了Cookie不會是最佳的。

+0

在會話中存儲值肯定沒有任何問題。在頁面之間傳遞數據時,它是首選的方法。也就是說,你的代碼對我來說看起來很好。嘗試添加一些日誌記錄,以便您可以查看生產服務器上正在發生的事情。 – mituw16

+0

我認爲該頁面正在存儲在緩存中,請嘗試將View.aspx設置爲不緩存,並查看是否有幫助 – Pseudonym

+0

@ PseudoNym01在哪裏更改設置以便View.aspx不被緩存?在我的瀏覽器中,還是有任何代碼爲此目的? – NewbieProgrammer

回答

0

它只是將值保存在緩存中。我必須強制關閉ASP Web應用程序中的緩存設置。問題解決了。

0

試試這個對按鈕單擊事件中的cookie

Response.Cookies["viewID"].Value = Convert.ToBase64String(Encoding.UTF8.GetBytes(ticketid));

存儲,您可以使用此代碼獲取價值:

試試這個:-----

String s =Encoding.UTF8.GetString(Convert.FromBase64String(Request.Cookies["viewID"].Value));

對不起,我忘了Request.cookies後的值[「viewID」]

+0

生成以下錯誤消息: 不能隱式地將類型'字符串'轉換爲'System.Web.HttpCookie' – NewbieProgrammer

+0

此錯誤已解決上面的代碼。 –

相關問題