Asp.net AutoEventWireup True与False

Asp.net AutoEventWireup True与False,asp.net,visual-studio-2012,Asp.net,Visual Studio 2012,我使用的是Visual Studio 2012专业版。在page指令中设置AutoEventWireup属性的“true”和“false”没有任何区别。一直以来,它的行为都是“true”,这意味着我设置了“false”,没有显式绑定事件,但事件是隐式绑定的。如果我遗漏了什么,请告诉我 此设置不是关于触发事件,而是关于将处理程序绑定到标准页面事件。比较这两个演示如何处理Load事件的片段 首先,使用AutoEventWireup=“true”: 其次,使用AutoEventWireup=“fals

我使用的是Visual Studio 2012专业版。在page指令中设置AutoEventWireup属性的“true”和“false”没有任何区别。一直以来,它的行为都是“true”,这意味着我设置了“false”,没有显式绑定事件,但事件是隐式绑定的。如果我遗漏了什么,请告诉我

此设置不是关于触发事件,而是关于将处理程序绑定到标准页面事件。比较这两个演示如何处理
Load
事件的片段

首先,使用
AutoEventWireup=“true”

其次,使用
AutoEventWireup=“false”

在这两种情况下,
Load
事件将按页面触发,并由您的代码处理。但在第二种情况下,您必须明确注册该活动,而在第一种情况下,ASP.NET为您做所有事情


当然,其他页面生命周期事件也是如此,如
Init
PreRender
,等等。

我知道这是一个旧线程,但我想我应该添加以下内容,这最近对我有所帮助:

除了Andrei的回答之外,值得补充的是,通过将AutoEventWireup设置为“true”,每次页面加载时,您都有可能调用Page_Load()两次。这件事发生在我身上。我从中复制了以下内容,对其进行了充分解释:

如果性能是关键,请不要将AutoEventWireup设置为true 考虑启用自动事件连接后,ASP.NET必须 make在15到30之间尝试将事件与方法匹配

请注意以下关于将事件处理程序绑定到事件的内容:

  • 如果您将AutoEventWireup设置为true,请确保您也没有 手动将页面事件处理程序附加到事件。如果你这样做了,那么 可能会被多次调用

  • 仅对页面事件执行自动绑定,而不对事件执行自动绑定 用于页面上的控件

  • 作为将事件绑定到处理程序的替代方法,您可以重写 页或控件的Oneventname方法


即使设置AutoEventWireup=“false”,事件也被隐式绑定。在第二个代码段中,事件被隐式注册,没有以下代码。override void OnInit(EventArgs e){this.Load+=Page_Load;}很抱歉造成混淆。我误解了你的答案。您的意思是说AutoEventWireup仅用于页面事件,它不会影响其他事件,例如控件的“单击事件”和控件的“更改事件”。含义-无论AutoEventWireup值如何,页面事件以外的事件都将被隐式绑定。我可能是对的?
public class PageWithAutoEventWireup
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("Page_Load is called");
    }
}
public class PageWithoutAutoEventWireup
{
    override void OnInit(EventArgs e)
    {
        this.Load += Page_Load;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("Page_Load is called");
    }
}