asp.net page的AutoEventWireup屬性 轉

來源:互聯網
上載者:User

轉自http://www.cnblogs.com/qiantuwuliang

"

在調試代碼時發現Page_Load事件未執行,找了半天原因,原來是AutoEventWireup設定成false導致。
  轉一篇關於AutoEventWireup的文章.

asp.net(AutoEventWireup屬性的確切含義)

使用Asp.NET時,建立的aspx頁面第一行page指令中包含了一個AutoEventWireup屬性。網上的很多教程認為這一屬性,甚至這一行代碼都是沒用的。其實,這是不瞭解Asp.NET事件處理模型的表現。簡單來說,這一屬性決定了當前頁是否自動關聯某些特殊事件。 
     首先,從瀏覽器頁面觸發的事件不能立刻在本地得到處理,而是POST至伺服器上,因此,Asp.NET建立了委託(代理)機制。在建立一個事件的同時,建立相應的委託:

 

代碼

private void InitializeComponent()
{
this.mybutton.Click += new System.EventHandler(this.Button1_Click);//委託
}
private void Button1_Click(object sender, System.EventArgs e)
{
//事件內容
}

 

     委託將事件與該頁面顯式關聯。在AutoEventWireup="false"時,如果沒有委託,事件將不執行。

     這與早期VB採用的隱式事件掛起截然不同,各有利弊。但,Asp.NET中可以修改AutoEventWireup="true",使頁面與某些特殊的事件方法綁定,自動識別這些具有特定名稱的事件,而不需要進行委託。這些特定名稱包括:Page_Init, Page_Load, Page_DataBind, Page_PreRender和Page_Unload等。比如:

private void Page_Load(object sender, System.EventArgs e)
{
// 事件內容
}

 

     針對這些事件方法,開發人員可以利用該參數避免編寫過多的連結代碼。如果該屬性設定為"false",則代碼應改為:

代碼

private void InitializeComponent()
{
this.mybutton.Click += new System.EventHandler(this.Button1_Click);//委託
this.Load += new System.EventHandler(this.Page_Load);//可以用AutoEventWireup屬性避免的委託
}
private void Page_Load(object sender, System.EventArgs e)
{
// 事件內容
}
private void Button1_Click(object sender, System.EventArgs e)
{
//事件內容
}

 

     一定不可以在沒有委託的情況下使用Page_Load類似的方法!

     大部分情況下,頁面不需要關聯如此多的特殊事件,會增加額外的操作和系統開銷。同時, ASP.NET 頁架構自動呼叫事件處理的方法基於其預定名稱,這會導致到相同事件處理方法當頁運行被調用兩次,也會增大系統開銷。因此,Microsoft 建議始終將 AutoEventWireup 設定為 FALSE。

@ Page指令的說明:
http://msdn.microsoft.com/zh-cn/library/ydy4x04a(VS.80).aspx
ASP.NET 伺服器控制項事件模型
http://msdn.microsoft.com/zh-cn/library/cc437696(VS.71).aspx

"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.