9

Dies ist ein bisschen eine Visual Studio Frage. Ich fühle mit all den hilfreichen Intellisense, es sollte etwas geben, um zu helfen, aber ich kann es nicht finden.Wie füge ich Seitenereignisse für ASP.NET in Visual Studio 2008 hinzu

Ich habe eine Seite mit einem Codebehind in ASP.NET C# in VS2008 erstellt und es generiert natürlich automatisch eine PageLoad-Ereignismethode. Nun, was ist, wenn ich Methoden für mehr Ereignisse außer PageLoad hinzufügen möchte? Ich würde denken, dass es eine Liste auf der Foo.aspx-Seite möglicher Methodenereignishandler geben würde, die hinzugefügt werden. Gibt es nicht mehr wie PageInit, PageDispose, (oder equiv) etc ...? Wo kann ich diese finden?

EDIT - Ich kann natürlich die Methodennamen in der API nachschlagen. Ich suche nach einer praktischen Verknüpfung, um diese in Visual Studio hinzuzufügen. Wenn es eins erzeugt, kann es nicht andere machen?

Antwort

26
  • In der Lösung Explorer mit der rechten Seite klicken und „View-Komponente Designer“ wählen Sie aus dem Kontextmenü
  • öffnen Sie das Fenster Eigenschaften/Fenster (drücken F4)
  • jetzt den gelben Pfeil klicken/Flash-Symbol und Sie werden eine Liste aller Seitenereignisse
  • doppelklicken Sie auf das Ereignis sehen, für die Sie einen Handler
hinzufügen möchten

ich bin mir ziemlich sicher, dass es eine andere war w ay (ausgehend von der Designer-Ansicht), aber ich kann es nicht reproduzieren.

Normalerweise verwende ich die Seitenereignishandler nicht, stattdessen überschreibe ich die entsprechenden Methoden (z. B. OnLoad anstelle von Page_Load). Um einen dieser Overrides zu implementieren, können Sie einfach "override" in den Code-Behind eingeben und space drücken, um eine Liste der Methoden zu erhalten, die Sie überschreiben können.

+0

Works in VS2017! –

3

als eine Abkürzung, um zu sehen, was verfügbar ist, können Sie immer nur "Seite" eingeben. und dann schau dir die Liste in intellisense an. Sie könnten dann einen auswählen, drücken Sie + = TabTab, damit es den Stub für Sie generiert. Sobald der Stub erstellt wurde, müssten Sie die Zeile "Page.event + =" löschen, wo immer Sie sie erstellt haben. Eine Art hokey Workaround, aber kann ziemlich schnell arbeiten, sobald Sie den Dreh raus haben.

+0

Hokey aber nicht pokey - funktioniert schnell und einfach zu merken. Vielen Dank! – McArthey

+0

Das funktioniert gut. Da das Ereignis von einem Verweis namens "Page" behandelt wird, erhält der generierte Event-Handler zufällig den richtigen Namen, dh: 'Page_Load' für das Ereignis' Load'. Der einzige knifflige Teil ist, dass dies von "method scope" getan werden muss, da Sie nicht auf die Eigenschaft 'Page' im Klassenbereich zugreifen können. –

3

Mit der unschätzbaren ReSharper installiert ist (vielleicht ohne Arbeit) Ich kann einfach eingeben:

override 

und wenn ich Raum treffen Intellisence erscheint mit einer Liste aller Ereignisse, die ich wie OnInit, OnPreRender außer Kraft setzen können usw.

+1

In VS2010 habe ich ReSharper nicht installiert und es scheint so zu sein. Ich denke, das ist der einfachste Ansatz von allen hier bisher genannten. –

+0

Das funktioniert, aber es gibt feine Unterschiede zwischen der Behandlung der Ereignisse und dem Überschreiben der On_-Methoden. –

0

Wählen Sie im Quellcodefenster im Kombinationsfeld Objektliste das gewünschte Steuerelement (Seite) aus. Wählen Sie dann im Kombinationsfeld der Ereignisliste rechts neben dem Kombinationsfeld der vorherigen Objektliste das gewünschte Ereignis aus. Visual Studio erstellt den Ereignishandler für Sie.

0

Will man nicht die Art und Weise verwenden, wie durch M4N aber durch Code beschrieben:

Im PageName.aspx.cs;

private void InitializeComponent() 
{ 

    // this.LifeCycle += .. // Use intellisense to see alternatives easily 
    this.PreRender += new System.EventHandler(this.EventFunctionName); 

} 

dann in der gleichen Datei hinzufügen:

private void EventFunctionName(object sender, EventArgs e) 
{ 
    // Code.. 
} 

UPDATE (von Kommentar von Sahuagin): Dies wird nicht einen Event-Handler mit dem entsprechenden Namen generieren. Der Ereignishandler muss beispielsweise Page_Load benannt werden. Dies wird es nach Ihrer Klasse und nicht nach der Seite benennen, und so wird es nicht wirklich an Ihre Seite angeschlossen.

+0

Auch dies wird keinen Ereignishandler mit dem entsprechenden Namen erzeugen. Der Event-Handler muss beispielsweise "Page_Load" genannt werden. Dies wird es nach Ihrer Klasse und nicht nach "Page" benennen, sodass es nicht wirklich an Ihre Seite angeschlossen wird. –

+0

Ich hatte ursprünglich gesagt, dass der Event-Handler "geschützt" und nicht "privat" sein muss. Dies kann je nach Situation erforderlich sein oder auch nicht. –

+0

danke, ich habe es zu dem Beitrag auch hinzugefügt –

-1

TreeScheme.Nodes [0] .ChildNodes [0] .Checked = true; Diese

treeviewid.node[0].childnodes[0].checked=true; 

wird gesetzt, das Kind Knoten geprüft wahr in Seitenladeereignis der Seite

glücklich Codierung

+0

was? Wenn ich mich nicht irre, hat das überhaupt nichts mit der Frage zu tun –

Verwandte Themen