2010-09-10 16 views
14

Normalerweise, wenn die Page_Load Event-Handler in eine Code-Behind-Datei von Visual Studio (zB Doppelklick auf der Seite im Designer-Modus) hinzugefügt wird, endet es so aufzublicken:ReSharper Vorschlag Page_Load = Pageload

/// <summary> 
/// Handles the Load event of the Page control. 
/// </summary> 
/// <param name="sender">The source of the event.</param> 
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> 
protected void Page_Load(object sender, EventArgs e) 
{ 
    // ... 
} 

Aber ReSharper schlägt vor, Name 'Page_Load' does not match rule 'Methods, properties and events'. Suggested name is 'PageLoad'. Ich vermute, es gibt eine bessere Möglichkeit, den Handler für das Laden von Seiten zu definieren, aber ich kann mich nicht erinnern, was die Syntax ist, aber ich könnte mir vorstellen, dass diese Resharper-Warnung behoben würde.

Vielleicht so etwas wie:

/// <summary> 
/// Raises the <see cref="E:System.Web.UI.Control.Load"/> event. 
/// </summary> 
/// <param name="e">The <see cref="T:System.EventArgs"/> object that contains the event data.</param> 
protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e); 
    // ... 
} 

aber ich mich zu erinnern, dass OnLoad und PageLoad ist nicht genau das gleiche?

Antwort

8

und Page_Loadsind im Wesentlichen gleich. Page_Load wird über Reflektion aufgerufen, wenn AutoEventWireup auf Page aktiviert ist. OnLoad ist eine geschützte virtuelle Methode der Klasse Control (die die Klasse Page erbt).

Eine detaillierte Analyse der Funktionsweise von AutoEventWireup und der Gründe dafür finden Sie unter Inside AutoEventWireup.

Die Gemeinde hat auch Stackoverflow einige inputonwhetheritisbetter die Load Ereignis zu behandeln oder die OnLoad Methode außer Kraft setzen.

+1

Das ist ein hilfreicher Link mit einer guten Erklärung. Prost. :) –

44

Nur der Vollständigkeit halber dachte ich, dass ich hier die Antwort hinzufügen würden Sie von einem „David Benson“ bekam when you asked on jetbrains.net:

Wenn Sie ReSharper Optionen gehen unter Sprachen C# Naming Stil wählen. Wählen Sie die Schaltfläche Erweiterte Einstellungen ... und entfernen Sie Event subscriptions on fields:On vor $event$, so dass es $object$_$event$ ist. Das sollte die Warnung entfernen.

Für mich ist dies der einfachste Weg, ReSharper angesichts einer großen bestehenden Codebasis für Webanwendungen zu beschwichtigen.

+2

IMHO, das ist die richtige Antwort auf die Frage (+1, weil es mir geholfen hat) –

+0

Ich stimme zu. Dies ist eine einfachere Lösung für das Problem. Scheint wie ein Fehler in R # zu mir, der standardmäßig nicht warnt, wenn Sie PageOnLoad verwenden. – comecme

+0

Schönheit, dieses Problem hat mich seit Monaten abgehört und ich habe mich nie die Mühe gemacht, nachzuschlagen. Dadurch werden die Warnungen für Page_Load Page_Init usw. gelöscht, die Warnungen für alle anderen Warnungen bleiben jedoch intakt. Vielen Dank! –

0

Es ist ein Fehler in ReSharper 6.0 und niedriger. In 6.1 ist es behoben. Für AutoEventWireup-Handler schlägt es keine Änderungen vor, egal welche Benennungseinstellungen Sie haben.