PagesSection.AutoEventWireup Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
true
pokud 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 true
hodnota , 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ů.