我正在使用C#。默認情況下,當我在Visual Studio 2008中添加或不添加母版頁時,AutoEventWireup屬性在頁面指令中設置爲true。這個屬性在master page master指令中也被設置爲true。在ASP.Net的頁面指令中應該將AutoEventWireup設置爲什麼值?
我應該將AutoEventWireup設置爲(true/false)的值是什麼?
這兩個值的優缺點是什麼?
任何幫助,非常感謝。
謝謝。
我正在使用C#。默認情況下,當我在Visual Studio 2008中添加或不添加母版頁時,AutoEventWireup屬性在頁面指令中設置爲true。這個屬性在master page master指令中也被設置爲true。在ASP.Net的頁面指令中應該將AutoEventWireup設置爲什麼值?
我應該將AutoEventWireup設置爲(true/false)的值是什麼?
這兩個值的優缺點是什麼?
任何幫助,非常感謝。
謝謝。
這是一種根據Microsoft安裝的命名約定自動將事件處理程序連接到事件的方法。
如果我沒有記錯的話,這種方式的實現方式是反射。在運行時,ASP.NET將檢查你的類,尋找符合預期命名約定的簽名的方法,然後將它們作爲處理程序發送給它們各自的事件。
這就是說,專業人士認爲這是一種標準方法,並可節省您自己接線事件處理程序的麻煩。一個被認爲的「con」會是它需要一個額外的步驟(反思),比你自己做的花費更多。
大多數情況下,反映「成本」是如此之少以至於它實際上並不值得一提,但重要的是要了解封面下發生的情況。
如果它設置爲false,那麼如果您有像Page_Load或Page_PreInit這樣的方法,它們將不會觸發。 AutoEventWireup意味着如果有類似這樣的事件發生,他們應該將事件處理程序連接到這些事件。
這隻會導致運行時自動將傳統頁面生命週期方法(如Page_Load)連接到它們等效的事件處理程序(Page.Load)。如果您設置AutoEventWireup爲false,那麼你就需要這樣的:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}
的,而不是MS約定:
protected void Page_Load(object sender, EventArgs e)
{
}
您也不必擔心通話base.OnLoad,因爲wireup自動做到這一點。但是,將它設置爲false可能會帶來小的性能優勢 - 但我從未驗證過這一點。
-Nate戴維斯
這主要是不正確 - 你看第一個方法是不是一個事件處理程序,而是一個覆蓋。有一個巨大的差異,我建議你閱讀這個主題。你必須手動連接東西的方式是在代碼中,通常在構造函數中,像這樣: – 2008-10-24 16:03:54