Compartilhar via


PagesSection.AutoEventWireup Propriedade

Definição

Obtém ou define um valor que indica se os eventos de páginas ASP.NET são conectados automaticamente às funções de manipulação de eventos.

public:
 property bool AutoEventWireup { bool get(); void set(bool value); };
[System.Configuration.ConfigurationProperty("autoEventWireup", DefaultValue=true)]
public bool AutoEventWireup { get; set; }
[<System.Configuration.ConfigurationProperty("autoEventWireup", DefaultValue=true)>]
member this.AutoEventWireup : bool with get, set
Public Property AutoEventWireup As Boolean

Valor da propriedade

true se os eventos de páginas ASP.NET forem conectados automaticamente às funções de manipulação de eventos; caso contrário, false. O padrão é true.

Atributos

Exemplos

O exemplo de código a seguir mostra como definir ou ler a AutoEventWireup propriedade no código.

// Get the current AutoEventWireup property value.
Console.WriteLine(
    "Current AutoEventWireup value: '{0}'",
    pagesSection.AutoEventWireup);

// Set the AutoEventWireup property to false.
pagesSection.AutoEventWireup = false;
' Get the current AutoEventWireup property value.
Console.WriteLine( _
    "Current AutoEventWireup value: '{0}'", _
    pagesSection.AutoEventWireup)

' Set the AutoEventWireup property to false.
pagesSection.AutoEventWireup = False

O exemplo a seguir mostra as duas formas de assinaturas de método que são anexadas automaticamente a eventos de página quando AutoEventWireup é true.

<%@ Page Language="C#" AutoEventWireup="false" CodeFile="Default.aspx.cs" Inherits="_Default" %>
// This method will be automatically bound to the Load event
// when AutoEventWireup is true.
protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("Hello world");
}
// This method will be automatically bound to the Load event 
// when AutoEventWireup is true only if no overload having 
// object and EventArgs parameters is found.
protected void Page_Load()
{
    Response.Write("Hello world");
}
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
' This method will be automatically bound to the Load event
' when AutoEventWireup is true.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Response.Write("Hello world")
End Sub
' This method will be automatically bound to the Load event 
' when AutoEventWireup is true only if no overload having 
' object and EventArgs parameters is found.    
Protected Sub Page_Load()
    Response.Write("Hello world")
End Sub

O exemplo a seguir mostra como conectar explicitamente eventos quando AutoEventWireup é false.

// Following are three alternative ways of binding an event
// handler to an event when AutoEventWireup is false.  For
// any given event do this binding only once or the handler
// will be called multiple times.

// You can wire up events in the page's constructor.
public _Default()
{
    Load += new EventHandler(Page_Load);
}

// You can override the OnInit event and wire up events there.
protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    Load += new EventHandler(Page_Load);
}

// Or you can override the event's OnEventname method and
// call your handler from there.  You can also put the code
// execute when the event fires within the override method itself.
protected override void OnLoad(EventArgs e)
{
    Page_Load(null, null);
    base.OnLoad(e);
}

protected void Page_Load(object sender, EventArgs e)
{
    Response.Write("Hello world");
}
' The Handles keyword binds Page_Load to the Load event.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Response.Write("Hello world")
End Sub

Comentários

Quando AutoEventWireup é true, ASP.NET não exige que você associe explicitamente manipuladores de eventos a um evento de página, como Load.

Quando AutoEventWireup é false, você deve associar explicitamente o evento a um método . Por exemplo, se você tiver um Page_Load método no código de uma página, o método será chamado em resposta ao Load evento somente se você escrever um código como esse no exemplo a seguir (observe a Handles instrução no Visual Basic e o código do manipulador de eventos em C#):

Partial Class AutoEventWireupExample
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Me.Load
        Response.Write("Executing Page_Load")
    End Sub
End Class
public partial class AutoEventWireupExample : System.Web.UI.Page
{
    protected void Page_Load(object sender, System.EventArgs e)
    {
        Response.Write("Executing Page_Load");
    }
    override protected void OnInit(EventArgs e)
    {
        this.Load += new System.EventHandler(this.Page_Load);
    }
}

Quando AutoEventWireup é true, os manipuladores são automaticamente associados a eventos em tempo de execução com base em seu nome e assinatura. Para cada evento, ASP.NET pesquisa um método que é nomeado de acordo com o nome de evento padrãoPage_, como Page_Load ou Page_Init. ASP.NET verifica primeiro uma sobrecarga que tem a assinatura típica do manipulador de eventos (ou seja, especifica Object e EventArgs parâmetros). Se um manipulador de eventos com essa assinatura não for encontrado, ASP.NET verificará se há uma sobrecarga que não tem parâmetros.

Quando AutoEventWireup é false, você deve associar explicitamente manipuladores de eventos a eventos, conforme mostrado no exemplo anterior. Nesse caso, os nomes de método não precisam seguir um padrão.

O valor padrão será true se AutoEventWireup não for especificado na @ Page diretiva . O Visual Studio inclui automaticamente o atributo quando cria arquivos code-behind. Para ASP.NET páginas escritas em C#, o Visual Studio define o valor como true. Para o Visual Basic, o Visual Studio define o valor false como porque os manipuladores são associados a eventos usando a palavra-chave Handles, que é inserida automaticamente pelo Visual Studio quando gera um manipulador de eventos. Se você definir AutoEventWireup como true, poderá omitir (ou remover) os identificadores palavra-chave.

Não defina AutoEventWireup como true se o desempenho for uma consideração fundamental. Quando a transmissão automática de eventos está habilitada, ASP.NET deve fazer entre 15 e 30 tentativas de corresponder eventos com métodos.

Observe o seguinte sobre a associação de manipuladores de eventos a eventos:

  • Se você definir AutoEventWireup como true, certifique-se de não anexar manualmente manipuladores de eventos de página a eventos. Se você fizer isso, os manipuladores poderão ser chamados mais de uma vez.

  • A associação automática é executada somente para eventos de página, não para eventos para controles na página.

  • Como alternativa à associação de eventos a manipuladores, você pode substituir os On métodos eventname da página ou de controles.

Aplica-se a