2011-02-14 47 views
0

您好我有後續代碼:整數不更新

public partial class _Default : System.Web.UI.Page 
{ 
    int myValue; 


    protected void Button2_Click(object sender, EventArgs e) 
    { 

     myValue = myValue + 1; 
     Label2.Text = myValue.ToString(); 

    } 

} 

我不能似乎增加值,結果永遠是1 .....

+0

將int myValue替換爲static int myValue; – 2011-02-14 09:18:33

回答

4

這是因爲新的頁面類被創建,每次回來後會發生(由於點擊按鈕)。因此,實例變量所持有的狀態將在請求之間丟失。您需要使用視圖狀態來保存狀態。例如,

public partial class _Default : System.Web.UI.Page 
{ 
    private int myValue 
{ 
    get 
    { 
     var value = ViewState["myValue"]; 
     return null == value ? 0: (int)value; 
    } 
    set 
    { 
     ViewState["myValue"] = value; 
    } 
} 


    protected void Button2_Click(object sender, EventArgs e) 
    { 

     myValue = myValue + 1; 
     Label2.Text = myValue.ToString(); 

    } 

} 
6

的類實例是在GET/POST請求上重新創建的,所以要麼在ViewState中使用這個變量,要麼在靜態變量中使用它,如果它的目的是在應用程序範圍內的話。

ViewState["Num"] = myValue; 

並按鈕單擊事件,使用此。

myValue = ViewState["Num"] as int; 
myValue = myValue + 1; 
Label2.Text = myValue.ToString(); 
+0

你不會因爲調用'ViewState [「Num」]而得到編譯器錯誤嗎?可能僅適用於可空和參考類型。 – 2011-02-14 09:19:10

+0

我看到謝謝!!!! – cheesebunz 2011-02-14 09:28:05