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
Poniższy przykład przedstawia dwie formy podpisów metod, które są automatycznie dołączane do zdarzeń strony, gdy AutoEventWireup ma wartość 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
Jeśli AutoEventWireup parametr ma true
wartość , ASP.NET nie wymaga jawnego powiązania programów obsługi zdarzeń z zdarzeniem strony, takim jak Load.
Gdy AutoEventWireup parametr ma false
wartość , 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 Load zdarzenie tylko wtedy, gdy napiszesz taki kod w poniższym przykładzie (zwróć uwagę na Handles
instrukcję w języku 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 true
wartość , 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 procedury obsługi zdarzeń (czyli określa Object i EventArgs parametry). 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 false
wartość , 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 języka 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ć wartości AutoEventWireup , true
jeśli wydajność jest kluczową kwestią. Po włączeniu automatycznego połączenia zdarzeń ASP.NET musi zawierać od 15 do 30 prób dopasowania zdarzeń 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 nie dołączysz ręcznie programów obsługi zdarzeń strony do zdarzeń. Jeśli to zrobisz, programy obsługi mogą być wywoływane więcej niż jeden raz.Automatyczne powiązanie jest wykonywane tylko dla zdarzeń strony, a nie dla zdarzeń dla kontrolek na stronie.
Alternatywą dla powiązań zdarzeń do procedur obsługi jest
On
zastąpienie metod eventname strony lub kontrolek.