PagesSection.AutoEventWireup Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia wartość wskazującą, czy zdarzenia dla stron ASP.NET są automatycznie połączone z funkcjami obsługi zdarzeń.
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
Wartość właściwości
true jeśli zdarzenia dla stron ASP.NET są automatycznie połączone z funkcjami obsługi zdarzeń; w przeciwnym razie, false. Wartość domyślna to true.
- Atrybuty
Przykłady
Poniższy przykład kodu pokazuje, jak ustawić lub odczytać AutoEventWireup właściwość w kodzie.
// 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
W poniższym przykładzie przedstawiono dwie formy podpisów metod, które są automatycznie dołączane do zdarzeń strony, gdy AutoEventWireup jest to 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
W poniższym przykładzie pokazano, jak jawnie połączyć zdarzenia, gdy AutoEventWireup ma wartość 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
Uwagi
Gdy AutoEventWireup parametr ma truewartość , ASP.NET nie wymaga jawnego powiązania programów obsługi zdarzeń z zdarzeniem strony, takim jak Load.
Gdy AutoEventWireup parametr ma falsewartość , należy jawnie powiązać zdarzenie z metodą. Jeśli na przykład masz metodę Page_Load w kodzie strony, metoda zostanie wywołana w odpowiedzi na zdarzenie tylko wtedy, gdy napiszesz taki kod w poniższym przykładzie (zwróć uwagę LoadHandles na instrukcję w Visual Basic i kod procedury obsługi zdarzeń w języku 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);
}
}
Gdy AutoEventWireup parametr ma truewartość , programy obsługi są automatycznie powiązane ze zdarzeniami w czasie wykonywania na podstawie ich nazwy i podpisu. Dla każdego zdarzenia ASP.NET wyszukuje metodę o nazwie zgodnie z nazwą zdarzenia wzorcaPage_, taką jak Page_Load lub Page_Init. ASP.NET najpierw sprawdza przeciążenie, które ma typowy podpis obsługi zdarzeń (czyli określa i EventArgs parametrówObject). Jeśli program obsługi zdarzeń z tym podpisem nie zostanie znaleziony, ASP.NET sprawdza przeciążenie, które nie ma parametrów.
Gdy AutoEventWireup parametr ma falsewartość , należy jawnie powiązać programy obsługi zdarzeń z zdarzeniami, jak pokazano w poprzednim przykładzie. W takim przypadku nazwy metod nie muszą być zgodne ze wzorcem.
Wartość domyślna to true , jeśli AutoEventWireup nie jest określona @ Page w dyrektywie. Program Visual Studio automatycznie dołącza atrybut podczas tworzenia plików za pomocą kodu. W przypadku stron ASP.NET napisanych w języku C#program Visual Studio ustawia wartość na true. W przypadku programu Visual Basic program Visual Studio ustawia wartość na false , ponieważ programy obsługi są powiązane ze zdarzeniami przy użyciu słowa kluczowego Handles , które jest wstawiane automatycznie przez program Visual Studio podczas generowania programu obsługi zdarzeń. Jeśli ustawisz wartość AutoEventWireuptrue, możesz pominąć (lub usunąć) słowo kluczowe Handles .
Nie należy ustawiać AutoEventWireup wartości , true jeśli wydajność jest kluczową kwestią. Gdy automatyczne łączenie zdarzeń jest włączone, ASP.NET musi wykonać od 15 do 30 próbuje dopasować zdarzenia z metodami.
Zwróć uwagę na następujące informacje dotyczące powiązania programów obsługi zdarzeń z zdarzeniami:
Jeśli ustawiono wartość AutoEventWireup
true, upewnij się, że programy obsługi zdarzeń strony nie są dołączane ręcznie do zdarzeń. W przeciwnym razie programy obsługi mogą być wywoływane więcej niż raz.Automatyczne powiązanie jest wykonywane tylko dla zdarzeń strony, a nie dla zdarzeń dla kontrolek na stronie.
Alternatywą dla powiązań zdarzeń do programów obsługi jest zastąpienie
Onmetod eventname strony lub kontrolek.