PagesSection.AutoEventWireup Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает значение, отражающее автоматическое подключение событий для страниц ASP.NET к функциям обработки событий.
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
Значение свойства
true
, если события для страниц ASP.NET автоматически подключаются к функциям обработки событий; в противном случае false
. Значение по умолчанию — true
.
- Атрибуты
Примеры
В следующем примере кода показано, как задать или прочитать свойство в коде AutoEventWireup .
// 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
В следующем примере показаны две формы сигнатур методов, которые автоматически присоединяются к событиям страницы, если 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
В следующем примере показано, как явным образом подключить события, если 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
Комментарии
Если AutoEventWireup имеет значение true
, ASP.NET не требует явной привязки обработчиков событий к событию страницы, например Load.
Если AutoEventWireup имеет значение false
, необходимо явным образом привязать событие к методу . Например, если в коде страницы есть Page_Load
метод, метод будет вызываться в ответ на Load событие только в том случае, если вы напишете код, подобный приведенному в следующем примере (обратите внимание на Handles
оператор в Visual Basic и код обработчика событий в 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);
}
}
Если AutoEventWireup имеет значение true
, обработчики автоматически привязываются к событиям во время выполнения на основе их имени и сигнатуры. Для каждого события ASP.NET выполняет поиск метода, именованного в соответствии с именем события шаблонаPage_
, например Page_Load
или Page_Init
. ASP.NET сначала проверяет перегрузку, которая имеет типичную сигнатуру обработчика событий (то есть указывает Object параметры и EventArgs ). Если обработчик событий с этой сигнатурой не найден, ASP.NET проверяет перегрузку без параметров.
Если AutoEventWireup имеет значение false
, необходимо явным образом привязать обработчики событий к событиям, как показано в предыдущем примере. В этом случае имена методов не обязательно должны соответствовать шаблону.
Значение по умолчанию — true
if AutoEventWireup не указано в директиве @ Page
. Visual Studio автоматически включает атрибут при создании файлов кода программной части. Для ASP.NET страниц, написанных на C#, Visual Studio задает значение true
. Для Visual Basic Visual Studio задает значение false
, так как обработчики привязаны к событиям с помощью ключевое слово Дескрипторы, которая автоматически вставляется Visual Studio при создании обработчика событий. Если задано значение AutoEventWireuptrue
, можно опустить (или удалить) ключевое слово Дескрипторов.
Не устанавливайте значение , AutoEventWireuptrue
если производительность является ключевым фактором. Если автоматическое подключение событий включено, ASP.NET должно выполнять от 15 до 30 попыток сопоставления событий с помощью методов.
Обратите внимание на следующее о привязке обработчиков событий к событиям.
Если задано значение AutoEventWireup
true
, убедитесь, что обработчики событий страницы не присоединяют к событиям вручную. В этом случае обработчики могут вызываться несколько раз.Автоматическая привязка выполняется только для событий страницы, но не для событий для элементов управления на странице.
В качестве альтернативы привязке событий к обработчикам можно переопределить
On
методы eventname страницы или элементов управления .