2012-06-28 63 views
1

我需要一個字段來存儲一些信息後一個asp按鈕點擊另一個asp按鈕的點擊。爲什麼在ASP.Net中單擊按鈕後字段的值會被刪除?

我看到它沒有工作,所以我寫了下面這個簡單的頁面代碼隱藏(以爲也許我的一些代碼導致它),但在這裏我可以看到該字段確實得到了重新初始化。

我想每個按鈕點擊都會重新加載頁面。這是真的?如果是這樣的話 - 如何在沒有靜態變量的情況下克服這個問題(因爲如果多個人同時訪問同一頁面會怎麼樣?)?

public partial class _Default : System.Web.UI.Page 
{ 
    string s = "a"; 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     s = "b"; 
    } 

    protected void Button2_Click(object sender, EventArgs e) 
    { 
     here.InnerText = s;// "here" is an id. 
     //returns "a" despite Button1 having been clicked before. 
    } 
} 

回答

2

添加在你的代碼(的EnableViewState)

+0

謝謝。我試圖查找它,但它似乎是指控制。我如何做一個簡單的變量/字段? – ispiro

+0

ViewState [「Key」] =您的值; –

2

每次請求(GET或POST)的網頁時,_Default class(派生System.Web.UI.Page)的新實例時創建(然後銷燬),所含控件也會發生同樣的情況。

查看ASP.NET Page Life Cycle

當ASP.NET頁面運行時,頁面會經歷一個生命週期,其中 它執行一系列處理步驟。這些包括 初始化,實例化控件,恢復和維護狀態,運行事件處理程序代碼和呈現。 對於您理解頁面生命週期非常重要,因此您可以在 針對您打算的效果編寫適當的生命週期階段的代碼。

你能堅持一個值(在你的情況下,現場s的值)不同的技術(餅乾,會話,緩存,視圖狀態,...),也ASP.NET State Management Overview見。

相關問題