2 Stimmen

Auf welchen Wert sollte AutoEventWireup in der Seitenrichtlinie in ASP.Net gesetzt werden?

Ich verwende C#. Wenn ich in Visual Studio 2008 ein Webformular mit oder ohne Masterseite hinzufüge, ist das Attribut AutoEventWireup in der Seitendirektive standardmäßig auf true gesetzt. Dieses Attribut wird auch innerhalb der Master-Seite Master-Direktive auf true gesetzt.

Auf welchen Wert sollte AutoEventWireup gesetzt werden (true/false)?

Was sind die Vor- und Nachteile der beiden Werte?

Für jede Hilfe sind wir sehr dankbar.

Ich danke Ihnen.

3voto

Jason Bunting Punkte 56534

Dies ist ein Weg, um automatisch Ereignis-Handler zu Ereignissen zu verdrahten, die auf Namenskonventionen basieren, die Microsoft eingerichtet hat.

Wenn ich mich recht erinnere, wird dies durch Reflexion erreicht. Zur Laufzeit untersucht ASP.NET Ihre Klasse, sucht nach Methoden mit Signaturen, die mit der erwarteten Namenskonvention übereinstimmen, und verdrahtet diese dann als Handler für ihre jeweiligen Ereignisse.

Die Vorteile sind jedoch, dass es sich um einen Standardansatz handelt und Sie sich die Mühe ersparen, die Event-Handler selbst zu verdrahten. Ein vermeintlicher Nachteil wäre, dass ein zusätzlicher Schritt (Reflexion) erforderlich ist, der etwas mehr kostet, als wenn Sie es selbst tun würden.

In den meisten Fällen sind die "Kosten" für die Reflexion so gering, dass sie nicht der Rede wert sind, aber es ist wichtig, sich bewusst zu machen, was hinter den Kulissen geschieht.

1voto

NathanD Punkte 7901

Dies bewirkt lediglich, dass die Laufzeitumgebung automatisch die konventionellen Methoden des Seitenlebenszyklus wie Page_Load mit dem entsprechenden Eventhandler (Page.Load) verknüpft. Wenn Sie AutoEventWireup auf false setzen, dann brauchen Sie etwas wie:

protected override void OnLoad(EventArgs e)
{
   base.OnLoad(e); 
}

anstelle der MS-Konvention von:

protected void Page_Load(object sender, EventArgs e)
{
}

Sie müssen sich auch nicht darum kümmern, base.OnLoad aufzurufen, da das Wireup dies automatisch tut. Aber, es könnte ein kleiner Leistungsvorteil aus der Einstellung auf false sein - ich habe nie überprüft, dass aber.

-Nate Davis

0voto

Darren Kopp Punkte 74401

Wenn es auf false gesetzt ist, dann, wenn Sie Methoden wie Page_Load oder Page_PreInit haben, würden sie nicht immer Feuer. AutoEventWireup bedeutet, dass WENN es Ereignisse gibt, die so benannt sind, sollten sie den Ereignishandler bis zu diesen Ereignissen verdrahtet haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X