Sdílet prostřednictvím


PagesSection.AutoEventWireup Vlastnost

Definice

Získá nebo nastaví hodnotu označující, zda události pro ASP.NET stránky jsou automaticky připojeny k funkcím zpracování událostí.

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

Hodnota vlastnosti

truepokud události pro ASP.NET stránky jsou automaticky připojeny k funkcím zpracování událostí; v opačném případě . false Výchozí formát je true.

Atributy

Příklady

Následující příklad kódu ukazuje, jak nastavit nebo číst AutoEventWireup vlastnost v kódu.

// 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

Následující příklad ukazuje dvě formy podpisů metod, které jsou automaticky připojeny k událostem stránky, když AutoEventWireup je 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

Následující příklad ukazuje, jak explicitně připojit události, když AutoEventWireup je 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

Poznámky

Pokud AutoEventWireup je true, ASP.NET nevyžaduje explicitní vazbu obslužných rutin událostí na událost stránky, jako Loadje .

Pokud AutoEventWireup je false, musíte událost explicitně svázat s metodou. Pokud máte například v kódu stránky metodu Page_Load , bude metoda volána jako odpověď na Load událost pouze v případě, že napíšete kód podobný následujícímu příkladu (všimněte si Handles příkazu v jazyce Visual Basic a kódu obslužné rutiny události v jazyce 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);
    }
}

Pokud AutoEventWireup je truehodnota , obslužné rutiny se automaticky vážou k událostem za běhu na základě jejich názvu a podpisu. Pro každou událost ASP.NET vyhledá metodu, která je pojmenovaná podle vzoru Page_názvu události, například Page_Load nebo Page_Init. ASP.NET nejprve zkontroluje přetížení, které má typický podpis obslužné rutiny události (to znamená, že určuje Object parametry a EventArgs ). Pokud není nalezena obslužná rutina události s tímto podpisem, ASP.NET zkontroluje přetížení, které nemá žádné parametry.

Pokud AutoEventWireup je false, musíte explicitně svázat obslužné rutiny událostí s událostmi, jak je znázorněno v předchozím příkladu. V takovém případě nemusí názvy metod dodržovat vzor.

Výchozí hodnota je true , pokud AutoEventWireup není v direktivě zadána @ Page . Visual Studio automaticky zahrne atribut při vytváření souborů s kódem na pozadí. Pro ASP.NET stránky napsané v jazyce C# sada Visual Studio nastaví hodnotu na true. V jazyce Visual Basic sada Visual Studio nastaví hodnotu na false , protože obslužné rutiny jsou vázány na události pomocí klíčového slova Handles , které je automaticky vloženo sadou Visual Studio při generování obslužné rutiny události. Pokud nastavíte AutoEventWireup na true, můžete klíčové slovo Handles vynechat (nebo odebrat).

Nenastavujte AutoEventWireup na hodnotu , true pokud je výkon klíčovým aspektem. Pokud je povolené automatické propojení událostí, ASP.NET musí provést mezi 15 a 30 se pokusí porovnat události pomocí metod.

Mějte na paměti následující informace o vazbách obslužných rutin událostí s událostmi:

  • Pokud nastavíte AutoEventWireup na true, ujistěte se, že k událostem také ručně nepřipojujete obslužné rutiny událostí stránky. Pokud ano, obslužné rutiny se můžou volat vícekrát.

  • Automatická vazba se provádí pouze pro události stránky, nikoli pro události ovládacích prvků na stránce.

  • Jako alternativu k vazbám událostí na obslužné rutiny můžete přepsat On metody eventname stránky nebo ovládacích prvků.

Platí pro