Compartir vía


PagesSection.AutoEventWireup Propiedad

Definición

Obtiene o establece un valor que indica si los eventos para las páginas ASP.NET se conectan automáticamente a las funciones de control 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 propiedad

Es true si los eventos para las páginas ASP.NET se conectan automáticamente a las funciones de control de eventos; de lo contrario, es false. De manera predeterminada, es true.

Atributos

Ejemplos

En el ejemplo de código siguiente se muestra cómo establecer o leer la AutoEventWireup propiedad en el 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

En el ejemplo siguiente se muestran las dos formas de firmas de método que se adjuntan automáticamente a eventos de página cuando AutoEventWireup es 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

En el ejemplo siguiente se muestra cómo conectar explícitamente los eventos cuando AutoEventWireup es 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

Comentarios

Cuando AutoEventWireup es true, ASP.NET no requiere que enlace explícitamente controladores de eventos a un evento de página, como Load.

Cuando AutoEventWireup es false, debe enlazar explícitamente el evento a un método . Por ejemplo, si tiene un Page_Load método en el código de una página, se llamará al método en respuesta al evento solo si escribe código similar al Load del ejemplo siguiente (observe la Handles instrucción en Visual Basic y el código del controlador de eventos en 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);
    }
}

Cuando AutoEventWireup es true, los controladores se enlazan automáticamente a eventos en tiempo de ejecución en función de su nombre y firma. Para cada evento, ASP.NET busca un método denominado según el nombre de evento de patrónPage_, como Page_Load o Page_Init. ASP.NET comprueba primero una sobrecarga que tiene la firma típica del controlador de eventos (es decir, especifica Object y EventArgs parámetros). Si no se encuentra un controlador de eventos con esta firma, ASP.NET comprueba si hay una sobrecarga que no tiene parámetros.

Cuando AutoEventWireup es false, debe enlazar explícitamente controladores de eventos a eventos, como se muestra en el ejemplo anterior. En ese caso, los nombres de método no tienen que seguir un patrón.

El valor predeterminado es true si AutoEventWireup no se especifica en la @ Page directiva . Visual Studio incluye automáticamente el atributo cuando crea archivos de código subyacente. Para ASP.NET páginas escritas en C#, Visual Studio establece el valor trueen . Para Visual Basic, Visual Studio establece el valor en false porque los controladores están enlazados a eventos mediante la palabra clave Handles , que Visual Studio inserta automáticamente cuando genera un controlador de eventos. Si establece en AutoEventWireuptrue, puede omitir (o quitar) la palabra clave Handles .

No establezca en AutoEventWireuptrue si el rendimiento es una consideración clave. Cuando la conexión automática de eventos está habilitada, ASP.NET debe realizar entre 15 y 30 intentos de hacer coincidir eventos con métodos.

Tenga en cuenta lo siguiente sobre cómo enlazar controladores de eventos a eventos:

  • Si establece AutoEventWireuptrueen , asegúrese de no adjuntar manualmente controladores de eventos de página a eventos. Si lo hace, es posible que se llame a los controladores más de una vez.

  • El enlace automático solo se realiza para los eventos de página, no para los eventos de los controles de la página.

  • Como alternativa a enlazar eventos a controladores, puede invalidar los On métodos eventname de la página o de los controles.

Se aplica a