PagesSection.AutoEventWireup Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.