PagesSection.AutoEventWireup Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Recebe ou define um valor que indica se os eventos das páginas ASP.NET estão automaticamente ligados a funções de gestã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 de Propriedade
true se os eventos de ASP.NET páginas estiverem automaticamente ligados a funções de gestão de eventos; caso contrário, false. A predefinição é true.
- Atributos
Exemplos
O seguinte exemplo de código mostra como definir ou ler a AutoEventWireup propriedade em 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 seguinte mostra as duas formas de assinaturas de método que são automaticamente associadas 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 seguinte mostra como ligar 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
Observações
Quando AutoEventWireup é true, não ASP.NET exige que vincule explicitamente os gestores de eventos a um evento de página como Load.
Quando AutoEventWireup é false, deve vincular explicitamente o evento a um método. Por exemplo, se tiver um método Page_Load no código de uma página, o método será chamado em resposta ao evento Load apenas se escrever código assim no exemplo seguinte (repare na instrução Handles em Visual Basic e no código do gestor 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 handlers são automaticamente ligados a eventos em tempo de execução com base no seu nome e assinatura. Para cada evento, ASP.NET procura um método nomeado de acordo com o padrão Page_nomeevento, como Page_Load ou Page_Init. ASP.NET verifica primeiro uma sobrecarga que tenha a assinatura típica do gestor de eventos (ou seja, especifica parâmetros Object e EventArgs). Se não for encontrado um gestor de eventos com esta assinatura, o ASP.NET verifica uma sobrecarga que não tem parâmetros.
Quando AutoEventWireup é false, deve vincular explicitamente os gestores de eventos a eventos, como mostrado no exemplo anterior. Nesse caso, os nomes dos métodos não têm de seguir um padrão.
O valor padrão é true se AutoEventWireup não for especificado na @ Page diretiva. O Visual Studio inclui automaticamente o atributo quando cria ficheiros por trás do código. Para ASP.NET páginas escritas em C#, Visual Studio define o valor para true. Para Visual Basic, Visual Studio define o valor para false porque os handlers são ligados a eventos usando a palavra-chave Handles, que é inserida automaticamente pela Visual Studio quando gera um handler de eventos. Se definires AutoEventWireup para true, podes omitir (ou remover) a palavra-chave Handles .
Não defina AutoEventWireup se true o desempenho é uma consideração chave. Quando o fio automático de eventos está ativado, o ASP.NET tem de fazer entre 15 e 30 tentativas para emparelhar eventos com métodos.
Note o seguinte sobre ligar handlers de eventos a eventos:
Se definires AutoEventWireup para
true, certifica-te de que não anexas manualmente manipuladores de eventos de página aos eventos. Se o fizeres, os tratadores podem ser chamados mais do que uma vez.A ligação automática é realizada apenas para eventos de página, não para eventos de controlos na página.
Como alternativa a associar eventos a handlers, pode sobrescrever os
Onmétodos de nome do evento da página ou dos controlos.