2011-08-30 60 views
1

我嘗試創建一個具有用於更改圖像的按鈕的Web應用程序。這是我的代碼:在C#web應用程序中通過會話保存數據

public partial class _Default : System.Web.UI.Page 
{ 
    private bool test ; 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 

     if (test) 
     { 
      Image1.ImageUrl = @"~/images/il_570xN.183385863.jpg"; 
      test = false; 
     }else 
     { 
      Image1.ImageUrl = @"~/images/BAG.png"; 
      test = true; 
     } 

    } 
} 

我的問題是每次刷新頁面。意思是,我點擊按鈕「測試」後返回到它的初始值。我如何能夠通過會話訪問所有變量?
請注意,我不想解決這個特定的圖像問題,但要知道如何保持數據,直到用戶關閉頁面。

回答

5

你可以存儲在Session

任意值使用
Session["someKey1"] = "My Special Value"; 
Session["someKey2"] = 34; 

或更復雜的值:

Session["myObjKey"] = new MyAwesomeObject(); 

而且讓他們退了出去:

var myStr = Session["someKey1"] as String; 
var myInt = Session["someKey2"] as Int32?; 
var myObj = Session["myObjKey"] as MyAwesomeObject; 
1

將變量存儲在cookie中! :)

實施例:

var yourCookie = new HttpCookie("test", true); 
Response.Cookies.Add(yourCookie); 
+0

naaaaaaaaahhhh! –

+0

我沒有說這是完美的解決方案,他要求解決方案.. :) – Abbas

2

ASP.NET web表單是無國籍所以這是由設計。

您可以將您的bool變量存儲在頁面的ViewState中,以便您始終將其更新並保存在同一頁面中。

會議也將工作,但我會把這個局部頁面相關的變量在ViewState,因爲它只會在這個頁面(我猜)

+0

用戶明確指出,上面的例子不是他想要解決的問題......而是如何存儲值,直到用戶關閉瀏覽器。根據定義,這是'會議' – Josh

+0

是的,你是對的,但從代碼他需要的是明確的,我告訴我的回答中的差異:) –

1
Session["show_image"] = "true"; 
+1

壞主意存儲在會話中變量只用於1頁! –

0

達到你需要檢查你想要什麼,如果是回發或不爲這樣:

protected void Button1_Click(object sender, EventArgs e) 
{ 

    if (test && !IsPostBack) 
    { 
     Image1.ImageUrl = @"~/images/il_570xN.183385863.jpg"; 
     test = false; 
    }else 
    { 
     Image1.ImageUrl = @"~/images/BAG.png"; 
     test = true; 
    } 

} 

,但不這樣做的。你正在接近這個錯誤。您不希望在Session中存儲是否顯示此圖像等等。在不知道您面臨的具體問題的情況下很難提出方法。

0

除了已經提到的另一種選擇是將數據存儲在ViewState中。如果它僅用於回發情況,那可能是一種可能的方式。

ViewState["test"] = true; 

您在服務器上節省內存,但使用一點點帶寬。當用戶瀏覽到另一個頁面時,數據會丟失。

相關問題