2009-06-03 56 views
1

我一直在寫代碼在Page_Load中的功能是這樣如何防止在Asp.net頁面中添加相同的事件?

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     UserControl1.Button_Clicked += new EventHandler(UserControl1_Button_Clicked); 
    } 
} 

但是,當頁面從另一個頁面引導到這個頁面相同的功能將被再次添加。

有沒有什麼方法可以防止它發生?

我想使用會話,以防止它,但我想知道有沒有更好的方法可以做同樣的工作。 非常感謝!

+0

你在使用Server.Transfer嗎? – jrista 2009-06-03 01:57:47

回答

1

在C#ASP.NET中,每次加載頁面時都必須添加控件的事件處理程序。這就是框架的工作原理。因此,如果您要爲控件聲明自定義事件處理程序,那麼在頁面的Page_Init事件中它會更清晰。最後,因爲這需要每次都發生,所以不要將代碼包裝在「if(!IsPostBack)」條件中。

+0

但是,如果我不包裝在「if(!IsPostBack)」條件的代碼。 當我點擊按鈕並做回發,按鈕點擊方法將被提出兩次! – Kirk 2009-06-03 02:09:39

1

我會推薦在.aspx頁面中設置autoeventwireup = false。然後,在頁面後面的代碼(.cs文件)中,爲page_init中的按鈕處理程序添加事件。

我已經看到有時會導致我的事件被激發兩次,如果我將它保留爲true。
按鈕不應該需要(!isPostBack)條件。

0

笨方法是這樣的:

聲明變量 私人一個由於布爾=真

保護的子cmd_Entry_Click(BYVAL發件人爲對象,BYVALË作爲System.EventArgs)把手cmd_Entry.Click 如果α=的IsPostBack然後 SAVEDATA() clearData() 一個=假 結束如果結束 子

應工作:d

相關問題