2012-08-14 77 views
4

這是我正在使用的代碼。我理解它的方式,LinkBut​​ton1_Click應該只在我點擊LinkBut​​ton1時被調用。不幸的是,該方法在頁面加載時被調用,所以我迷失了方向。代碼中有什麼地方有錯嗎?鏈接到LinkBut​​ton.Click的事件處理程序在頁面加載時被調用

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 
     //Do something 
} 

override protected void OnInit(EventArgs e) 
{ 
     InitializeComponent(); 
     base.OnInit(e); 
} 
private void InitializeComponent() 
{ 
     this.Load += new System.EventHandler(this.Page_Load); 
     this.LinkButton1.Click += new EventHandler(this.LinkButton1_Click);   
} 

感謝您的幫助

+0

執行初始請求或頁面時執行的'LinkBut​​ton1_Click'方法,是否返回給客戶端,並在該LinkBut​​ton1的Click事件之後觸發? – 2012-08-14 15:17:27

+1

在您的@Page指令中,AutoEventWireup屬性是否設置爲true?由於您手動連接了事件處理程序,因此請確保將其設置爲false。不確定按鈕點擊處理程序,但Page_Load將另外發射兩次。 – 2012-08-16 07:19:16

+0

我剛剛嘗試完全相同的東西,但它對我來說工作得很好!雖然一旦你點擊鏈接按鈕,然後刷新頁面,然後回發再次發生,鏈接按鈕事件處理程序被再次調用。但是這可以通過在OnInit()中執行IsPostBack檢查來解決。 AutoEventWireUp是真的,所以也沒有阻礙任何事情。 – Amn 2012-08-17 12:13:54

回答

0

如果你不是從代碼中調用「LinkBut​​ton1_Click」,或使用一些JavaScript終於觸發這個方法,那麼這不應該發生。 但是,我有類似的問題,由Visual Studio調試輸出引起的。 轉到Visual Studio主菜單並選擇「Build」 - >「Clean Solution」。 您也可以從設計師中刪除您的「LinkBut​​ton1」,並強制重建解決方案。這應該強制調試文件被重建,並且幽靈呼叫將消失。

相關問題