2013-05-01 38 views
2

檢查和複查我的代碼後,我無法理解在火回傳?是否因爲我沒有刪除aspx上的OnClick刪除事件處理程序繼續爲什麼<code>btnBack_Click</code>事件繼續我已經刪除的事件和註冊另一位在<code>Page_Load</code></p> <pre><code>btnBack.Click -= new EventHandler(btnBack_Click); btnBack.Click += new EventHandler(btnPreviewBack_Click); </code></pre> <p>它是火後回傳

+0

我敢肯定那一定是removed.May是你secodn事件是什麼被炒 – 2013-05-01 03:47:36

+0

你有autoeventwireup設置爲true ? – aquinas 2013-05-01 04:11:18

+0

@aquinas是的,爲什麼? – HMP 2013-05-01 14:44:25

回答

3

我們不能清楚地看到你的Page Lifecycle要更改Click事件,但是,請記住,絕對一切(只要事件處理程序的變化)是「未完成」一旦生命週期開始(雖然導致事件回發仍然執行)。

當發生回發(無論是否是異步)時,所有事件處理程序都將恢復爲其原始配置。

最好的辦法是給你的事件處理程序的更改添加到Page_PreRender事件:

protected void Page_PreRender(Object sender, EventArgs e) 
{ 
    if (_MustChangeEventHandler) 
    { 
     btnBack.Click -= new EventHandler(btnBack_Click); 

     btnBack.Click += new EventHandler(btnPreviewBack_Click); 
    } 
} 
+0

謝謝!它給了我一個關於如何處理它的總體想法。我改變了Page_Load()上的Click事件,現在我正在嘗試PreRender,但仍然不能工作,但我認爲我可以使它工作......再次感謝 – HMP 2013-05-01 14:31:30

+1

Jesse是對的,在回發中所有的事件都是恢復。我做的是改變'Page_Load'內的事件並檢查回傳('if(IsPostBack)') – HMP 2013-05-01 15:33:48

+0

@HDMP很高興幫助! =) – Jesse 2013-05-01 16:11:32

相關問題