Поделиться через


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 попыток сопоставления событий с помощью методов.

Обратите внимание на следующее о привязке обработчиков событий к событиям.

  • Если задано значение AutoEventWireuptrue, убедитесь, что обработчики событий страницы не присоединяют к событиям вручную. В этом случае обработчики могут вызываться несколько раз.

  • Автоматическая привязка выполняется только для событий страницы, но не для событий для элементов управления на странице.

  • В качестве альтернативы привязке событий к обработчикам можно переопределить On методы eventname страницы или элементов управления .

Применяется к