Aufrufen der ursprünglichen Page_Load-Funktion aus Inline-Code

8

Ich mag es, eine ASPX-Website mit Monkey zu füllen, damit ich der Page_Load-Methode in einer kompilierten Assembly etwas hinzufügen kann.

Mein erster Gedanke war, der ASPX-Datei ein Skript-Tag hinzuzufügen, das eine zweite Page_Load-Methode enthält:

%Vor%

Aber anscheinend wird nur die Page_Load-Methode aus dem Inline-Code ausgeführt und nicht die aus der ursprünglichen CodeBehind-Datei (innerhalb der kompilierten Assembly).

Ist es möglich, die ursprüngliche Methode aus meinem Inline-Code heraus aufzurufen? Oder gibt es eine andere Möglichkeit, Dinge hinzuzufügen, die direkt nach dem Aufruf der Page_Load-Methode aus Inline-Code ausgeführt werden sollten, ohne die vorhandene Assembly zu ändern?

    
Martin 07.07.2011, 14:40
quelle

4 Antworten

10

Das Asp.net-Modell besagt, dass die in der ASPX-Datei deklarierte Seite tatsächlich eine untergeordnete Klasse der Klasse ist, die von System.Web.UI.Page in der Datei .aspx.cs deklariert.

Daher wird die Page_Load-Methode aufgerufen, weil sie im Grunde die ursprüngliche Page_Load-Methode verbirgt. Wenn Sie dieser Logik folgen, können Sie Folgendes tun:

%Vor%

Es gibt keine Probleme mit der Zugänglichkeit, da asp.net standardmäßig Page_Load und ähnliche Methoden wie protected deklariert, so dass untergeordnete Klassen sie aufrufen können.

    
SWeko 07.07.2011, 14:46
quelle
3
___ answer6612498 ___

Sie können auch versuchen, Inherits method zu verwenden. Diese werden vor %code% aufgerufen und sind möglicherweise ein saubererer Weg, um mit den Dingen umzugehen.

    
___ antwort6612493 ___

Ja ist es:

%Vor%

Der Grund dafür ist, dass das ASP.Net-Framework mit dem Modell arbeitet, in dem die ASPX-Datei in eine Klasse kompiliert wird, die von der in Ihrer Code-hinter-Datei definierten Klasse erbt (eigentlich die durch %code% definierte Klasse). Attribut auf dem Seiten-Tag)

%Vor%     
___ qstntxt ___

Ich mag es, eine ASPX-Website mit Monkey zu füllen, damit ich der Page_Load-Methode in einer kompilierten Assembly etwas hinzufügen kann.

Mein erster Gedanke war, der ASPX-Datei ein Skript-Tag hinzuzufügen, das eine zweite Page_Load-Methode enthält:

%Vor%

Aber anscheinend wird nur die Page_Load-Methode aus dem Inline-Code ausgeführt und nicht die aus der ursprünglichen CodeBehind-Datei (innerhalb der kompilierten Assembly).

Ist es möglich, die ursprüngliche Methode aus meinem Inline-Code heraus aufzurufen? Oder gibt es eine andere Möglichkeit, Dinge hinzuzufügen, die direkt nach dem Aufruf der Page_Load-Methode aus Inline-Code ausgeführt werden sollten, ohne die vorhandene Assembly zu ändern?

    
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ answer6612594 ___

Das funktioniert für mich.

%Vor%     
___ tag123codebehind ___ Code-Behind bezieht sich auf Code für Ihre Benutzeroberfläche (Windows Forms, ASP.NET-Seite usw.), die in einer separaten Klassendatei enthalten sind. Dies ermöglicht eine Trennung der Benutzeroberfläche und der dahinter liegenden Logik. ___ qstnhdr ___ Aufrufen der ursprünglichen Page_Load-Funktion aus Inline-Code ___ tag123aspnet ___ ASP.NET ist ein Framework für die Entwicklung von Microsoft-Webanwendungen, mit dem Programmierer dynamische Websites, Webanwendungen und Webdienste erstellen können. Es ist nützlich, dieses Tag in Verbindung mit dem Typ des Projekttyps zu verwenden, z. [asp.net-mvc], [asp.net-webforms] oder [asp.net-web-api]. Verwenden Sie dieses Tag NICHT für Fragen zu ASP.NET Core - verwenden Sie stattdessen [asp.net-core]. ___ answer6612502 ___

Das Asp.net-Modell besagt, dass die in der ASPX-Datei deklarierte Seite tatsächlich eine untergeordnete Klasse der Klasse ist, die von %code% in der Datei .aspx.cs deklariert.

Daher wird die Page_Load-Methode aufgerufen, weil sie im Grunde die ursprüngliche Page_Load-Methode verbirgt. Wenn Sie dieser Logik folgen, können Sie Folgendes tun:

%Vor%

Es gibt keine Probleme mit der Zugänglichkeit, da asp.net standardmäßig Page_Load und ähnliche Methoden wie %code% deklariert, so dass untergeordnete Klassen sie aufrufen können.

    
___ tag123inlinecode ___ Quellcode, der in den Hauptteil eines Programms geschrieben wird, in derselben oder einer anderen Sprache als die Hostsprache. ___
Justin 07.07.2011 14:45
quelle
0

Sie können auch versuchen, PreLoad method zu verwenden. Diese werden vor Page_Load aufgerufen und sind möglicherweise ein saubererer Weg, um mit den Dingen umzugehen.

    
Mrchief 07.07.2011 14:46
quelle
0

Das funktioniert für mich.

%Vor%     
Yiğit Yener 07.07.2011 14:52
quelle