[英]How to share data between two web pages?
我正在嘗試開發一個Web應用程序項目,並試圖弄清楚如何在第二個網頁上顯示我的答案。
我在第一個網頁上放置了一個文本框,並更正了我的應用程序的編碼,因為在調試后,我在文本框中收到了正確的答案。
理想情況下,我想刪除此文本框,並希望將我設法在我的文本框中顯示的答案顯示在下一個網頁的標簽上。 這是我代碼的計算部分;
var cost = ((int)duration.TotalMinutes) * 0.35m;
txtCost.Text = cost.ToString("c");
我想使答案出現在第二個網頁中,而不顯示在第一個網頁中。 我試過使用Session["Cost"] = cost;
在第一個網頁的按鈕單擊事件處理程序上, double cost = (double)(Session["Cost"]); lblDisplay.Text = cost.ToString("c");
double cost = (double)(Session["Cost"]); lblDisplay.Text = cost.ToString("c");
而這在第二個網頁上,但是每次我調試並運行時,我總是會在標簽上顯示$ 0.00。 有人可以幫我解決這個問題嗎?
在MVC應用程序的兩個視圖之間共享價值,請嘗試以下
// To save into the Cache
System.Web.HttpContext.Current.Cache["CostKey"] = cost;
// To retrieve Cache Value
var cachedValue = System.Web.HttpContext.Current.Cache["CostKey"] as double;
對於會話狀態,請查看此鏈接
在ASP.NET WebForms應用程序中,您可以通過多種方式傳遞數據:
快取
有關示例,請參見學習曲線答案。 但是,如果服務器遇到內存不足等情況,則不能保證再次找到放置在緩存中的對象。 ASP.NET自行管理緩存並逐出對象以維護內存可用性。 這與ApplicationState
和SessionState
相反,在ApplicationState
和SessionState
中,對象一直保留到手動刪除它們,或者Application
結束或Session
過期為止。
會話和應用程序狀態
您可以將任何對象放在SessionState
對象中 ,然后在代碼中的其他位置檢索它。 但是,由於SessionState
接受object
-s,因此需要適當地SessionState
它。 例如,如果您存儲一個號碼,則在檢索它時,必須像您已經做過的那樣自己進行轉換。 它不起作用的原因,也許是您正在嘗試從另一個用戶的SessionState
檢索它。 是的, SessionState
是一個按用戶的結構。 如果需要從一台設備添加該值,然后在另一台設備上使用,請使用ApplicationState
:
Application["cost"] = cost;
重定向響應
使用這種技術,您可以強制瀏覽器從服務器請求另一個頁面,並指定完整的查詢字符串,包括所需的變量。 例如:
var destination = Server.UrlEncode("/someOtherPage.aspx?cost=34.65"); Response.Redirect(destination);
或者,可以使用Server.Transfer("someOtherPage.aspx")
保存往返。 但是,在那種情況下,瀏覽器不會更改地址欄中的地址,因此會誤導用戶瀏覽了一頁,但實際上是someOtherPage.aspx
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.