2010-06-16 28 views
1

我遇到問題,想知道是否有人可以幫助我。完成前訪問控制值Page_Load

我用一些控件創建了一個表格,我想在每次回發中保存所有控件值。由於控制是在Page_Load後剛剛定義,我解決不了我的問題是這樣的:

object o; 
protected void Page_Load(object sender, EventArgs e) 
{ 
o = createObject(); 
    Create_Table(); 
if (Page.IsPostBack) 
    Save_Data(); 
} 

我以爲我可以在每一個回發事件的開頭執行Save_Data(),但我認爲應該存在的更好的方法來解決我的問題。

謝謝。

回答

0

回發完成後,您的變量'o'將不包含您的原始值。這是因爲每個請求都會在服務器上創建一個新的頁面對象,並且您的成員變量值將會丟失。使用內置的'Session'屬性來保存請求之間的數據會更好。

見我的回答here

+0

事情是:我不希望該對象作爲會話變量,我更願意在每個page_load上創建它。 該對象是基於一些文件創建的,其主要功能是:給出表的結構和存儲表值。 表格將始終具有相同的結構,但其值可能會有所不同,並且我希望在發生任何事情之前將它們保存在文件中。 – userk 2010-06-16 21:47:51

1

既然你希望它是在頁面級別,爲什麼不使用的ViewState?由於o似乎總是設置相同的數據可能不需要設置多於一次,但如果你真的想要你可以刪除,如果不是回發的東西...

protected object o 
{ 
    get { 
     return ViewState["o"]; 
    } 
    set { 
     ViewState["o"] = value; 
    } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) { o = createObject(); }   
    Create_Table(); 
    if (Page.IsPostBack) 
     Save_Data(); 
}