2010-06-09 49 views
0

有人可以解釋爲什麼預期該代碼是不工作:page_load另一個處理程序?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class temp : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.Write("foo<br>"); 
     this.Load += new EventHandler(temp_Load); 

    } 

    void temp_Load(object sender, EventArgs e) 
    { 
     Response.Write("bar<br>"); 
     Response.End(); 
    } 
} 

嘗試添加另一個處理程序頁面加載事件,以便輸出將是:

foo<br> 
bar<br> 

編輯:

實際物體消失,並在回發時重新創建 。 - ggonsalv

因此,我怎麼能修改內存中的方法,使它與新的對象修改方法?

例如我想修改或添加page_init處理程序在運行時下一次頁面加載?

+0

您需要更好地定義您的問題。我仍然試圖想出定義你的問題的類比。 – ggonsalv 2010-06-10 04:53:19

回答

1

您需要在Page_Init中註冊它。到Page_load開始時,它太晚了。

+0

但如果我在現有的頁面加載處理程序中註冊頁面加載處理程序是不是它支持當我點擊刷新按鈕並不被觸發時堅持? – 2010-06-09 11:59:09

+0

實際的對象消失並在回發時重新創建。 – ggonsalv 2010-06-09 12:22:38

+0

沒有事件不會持續在控件的值等... – ggonsalv 2010-06-10 00:45:33

0

您不能使用處理程序本身來修改Load處理程序。它已經執行已經太晚了。爲什麼不簡單地調用一個函數,因爲它對同一頁面有多個負載處理程序沒有多大意義:

protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Write("foo<br>"); 
    temp_Load(sender, e); 
} 
+0

我可以在.aspx文件中註冊<% %>標籤處理程序嗎?代碼inseide那些發生在page_load處理之前,據我所知 – 2010-06-09 11:45:20

+0

不,你不能,代碼裏面的aspx頁面執行比Page_Load晚得多。我建議你看一下ASP.NET頁面生命週期:http://msdn.microsoft.com/en-us/library/ms178472.aspx – 2010-06-09 11:48:52

相關問題