2008-09-28 9 views

Antwort

5

Die Methode OnLoad sollte der Ort sein, an dem das Ereignis Load ausgelöst wird. Ich persönlich versuche immer, mit dem Event fertig zu werden, es sei denn, ich muss extra um das Event kümmern.

Ich empfehle die Behandlung des Ereignisses selbst unter normalen Umständen.

3

Sie können dieses article auf dem Seitenlebenszyklus von Microsoft nützlich finden.

+0

vereinbart - ich glaube, es ist wichtig, ein gutes Verständnis für den gesamten Lebenszyklus zu haben. –

0

Auch wenn Sie von UserControl erben, sollten Sie die geschützten Methoden nicht außer Kraft setzen, wenn Sie nicht müssen. Die Page_Load ist da, um es Ihnen leichter zu machen, den Code hinzuzufügen, der spezifisch für Ihre UserControl ist.

Nur überschreiben OnLoad, wenn Sie absolute Kontrolle darüber haben müssen, wann (/ if) das Load Ereignis ausgelöst wird (was selten sein sollte, IMO).

2

Es ist wirklich nur eine Frage der Wahl. Mir erscheint es merkwürdig, dass ein Objekt ein Ereignis an sich selbst anbringt, besonders wenn es eine Methode gibt, die man überschreiben kann.

Ich denke, das ASP.NET-Team verwendet Ereignisse, weil das das Modell für Global.asa in ASP war, und die Leiste für Entwickler, die Vererbung und überschreiben virtuelle Methoden nicht verstehen.

Das Überschreiben der Methode erfordert mehr Wissen über den Seitenlebenszyklus, aber es ist nichts "falsch" damit.

0

ich denke, es ist das gleiche. IMHO, mit Events, haben Sie ein bisschen mehr Flexibilität, weil Sie mehr als einen Listener zu Ihrer Veranstaltung passieren können!

0

Ich denke, es gibt einen potenziell signifikanten Unterschied in den beiden Methoden.

Was ich meine, ist die Fähigkeit, Kontrolle über die Ausführungsreihenfolge zu haben.

Wenn Sie überschreiben, wissen Sie, wann die Basisklassen geladen werden, weil Sie sie aufrufen. Dies bietet mehr Kontrolle, ist aber wahrscheinlich eine schlechte Sache, wie viele argumentieren werden.

Wenn Sie ein Ereignis verwenden, haben Sie keine Garantie in Bezug auf die Reihenfolge des Anrufs. Dies zwingt Sie dazu, ein Load-Ereignis zu schreiben, das agnostisch sein sollte, was Super-Klassen während der Ladephase tun. Ich denke, dies wäre der bevorzugte Ansatz und deshalb ist der VS-Code, der automatisch generiert wird, auch so.

2

Lesen Sie den Abschnitt mit der Bezeichnung: "Binding Page Events" auf der MSDN-Seite mit dem Titel: "ASP.NET-Webserversteuerereignismodell“ (link to the page) Es gibt einige nützliche Aussagen wie diese:.

Ein Nachteil des AutoEventWireup Attribut ist, dass es erfordert, dass die Seite Event-Handler haben spezifische, vorhersehbare Namen Dieser begrenzt die Flexibilität bei der Benennung von Ereignisprozeduren Ein weiterer Nachteil ist, dass die Leistung beeinträchtigt ist, da ASP.NET nach Methoden zur Laufzeit sucht.Für eine Website mit hohem Verkehrsaufkommen könnte die Auswirkung auf die Leistung erheblich sein.

(AutoEventWireup Flag schaltet solche Methoden wie Page_Load)

Verwandte Themen