PagesSection.AutoEventWireup Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta un valore che indica se gli eventi per le pagine ASP.NET vengono connessi automaticamente alle funzioni di gestione degli eventi.
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
Valore della proprietà
true
se gli eventi per le pagine ASP.NET vengono connessi automaticamente alle funzioni di gestione degli eventi; in caso contrario, false
. Il valore predefinito è true
.
- Attributi
Esempio
Nell'esempio di codice seguente viene illustrato come impostare o leggere la AutoEventWireup proprietà nel codice.
// 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
Nell'esempio seguente vengono illustrate le due forme di firme del metodo associate automaticamente agli eventi di pagina quando AutoEventWireup è 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
Nell'esempio seguente viene illustrato come collegare in modo esplicito gli eventi quando AutoEventWireup è 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
Commenti
Quando AutoEventWireup è true
, ASP.NET non richiede l'associazione esplicita dei gestori eventi a un evento di pagina, ad Loadesempio .
Quando AutoEventWireup è false
, è necessario associare in modo esplicito l'evento a un metodo. Ad esempio, se si dispone di un Page_Load
metodo nel codice per una pagina, il metodo verrà chiamato in risposta all'evento Load solo se si scrive codice simile a quello nell'esempio seguente (si noti l'istruzione Handles
in Visual Basic e il codice del gestore eventi in 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);
}
}
Quando AutoEventWireup è true
, i gestori vengono associati automaticamente agli eventi in fase di esecuzione in base al nome e alla firma. Per ogni evento, ASP.NET cerca un metodo denominato in base al nome evento del modelloPage_
, ad esempio Page_Load
o .Page_Init
ASP.NET controlla innanzitutto la presenza di un overload con la firma tipica del gestore eventi, ovvero specifica Object e EventArgs parametri. Se non viene trovato un gestore eventi con questa firma, ASP.NET verifica la presenza di un overload senza parametri.
Quando AutoEventWireup è false
, è necessario associare in modo esplicito i gestori eventi agli eventi, come illustrato nell'esempio precedente. In tal caso, i nomi dei metodi non devono seguire un modello.
Il valore predefinito è true
se AutoEventWireup non è specificato nella @ Page
direttiva . Visual Studio include automaticamente l'attributo quando crea file code-behind. Per ASP.NET pagine scritte in C#, Visual Studio imposta il valore su true
. Per Visual Basic, Visual Studio imposta il valore su false
perché i gestori sono associati agli eventi usando la parola chiave Handle , che viene inserita automaticamente da Visual Studio quando genera un gestore eventi. Se si imposta su AutoEventWireuptrue
, è possibile omettere (o rimuovere) la parola chiave Handle .
Non impostare su AutoEventWireuptrue
se le prestazioni sono una considerazione chiave. Quando la trasmissione automatica degli eventi è abilitata, ASP.NET deve eseguire un tentativo compreso tra 15 e 30 di associare gli eventi ai metodi.
Si noti quanto segue sull'associazione di gestori eventi agli eventi:
Se si imposta su AutoEventWireup
true
, assicurarsi di non associare manualmente i gestori eventi di pagina agli eventi. In questo caso, i gestori potrebbero essere chiamati più volte.L'associazione automatica viene eseguita solo per gli eventi di pagina, non per gli eventi per i controlli nella pagina.
In alternativa all'associazione di eventi ai gestori, è possibile eseguire l'override dei
On
metodi eventname della pagina o dei controlli.