2017-03-09 118 views
0

我的基本結構:如何將一個變量從一種方法傳遞給另一種方法?

public partial class _Search : BasePage 
{ 
    private string[] catPath = new string[3]; //set string array 

    ...more code... 

    protected void Categories_DataBound(object sender, EventArgs e) 
    { 
     for (int i = 3; i > 0; i--) 
     { 
     catPath[i] = somestring; //fills array 
     } 
    } 

    ...more code... 

    protected void Cat1_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show(catPath[0]); //uses array 
    } 
} 

我在使用我的catPath陣列中的Click事件麻煩,就好像從來沒有在DataBound方法設置是空的。我知道它是在Click事件之前設置的,因爲我在DataBound方法中使用了MessageBox來顯示數組中的值,所以我做錯了什麼?

我試過類似的列表,但它有同樣的問題。像基本字符串的其他變量工作正常。

謝謝!

+0

「其他變量,如基本字符串,雖然工作正常。」那麼哪種類型工作不正常呢? –

+0

字符串數組 – MuffinMan

回答

3

ASP.NET是一種Web技術,Web是無狀態的,所以你必須以另一種方式維護狀態。你必須在ViewState或Session中維護它。所以,ViewState.add("CathPath", catPath)Session.add("CatPath", catPath)ViewState將保持在該頁面中,Session狀態將在應用程序中有活動會話時保持。然後,你可以這樣訪問它,var catPath = ViewState["CatPath"];

你可以用在一個屬性,因此您可以用類似的方式訪問它,你將如何正常類。

public string[] CatPath { 
    get { 
     return ViewState["CatPath"]; 
    }; 
} 
0

除了使用ViewState中或Session對象,你也可以將數據通過使用CommandEventArgs綁定的物品傳遞到頁面和CommandEventArgs.CommandArgument

的CommandArgument可以包含由程序員設置的任何字符串。 CommandArgument屬性通過允許您爲命令提供任何其他信息來補充CommandName屬性。

當頁面回傳發生時,數據在綁定事件處理程序中可用。只要確保方法簽名包含正確的EventArgs類型,而不僅僅是默認的。

void CommandBtn_Click(Object sender, CommandEventArgs e) 
相關問題