Übersicht über die ASP.NET-Seitenklasse
Aktualisiert: November 2007
Wenn eine ASP.NET-Seite angefordert wird und Markup an den Browser ausgibt, wird nicht nur der Code ausgeführt, den Sie für Ihre Seite erstellt haben. Vielmehr generiert und kompiliert ASP.NET zur Laufzeit eine oder mehrere Klassen. Es sind diese Klassen, die Aufgaben durchführen, ohne die die Seite nicht ausgeführt werden könnte. Dieses Thema gibt einen Überblick über den Code, der zur Laufzeit generiert wird.
Generieren und Ausführen des Seitenklassencodes
ASP.NET-Seiten werden als ein Ganzes ausgeführt, das sich einerseits aus den serverseitigen Elementen der Seite (z. B. den Steuerelementen) zusammensetzt und andererseits aus dem von Ihnen geschriebenen Ereignisbehandlungscode. Eine Vorkompilierung von Seiten in Assemblys ist nicht erforderlich. Die Kompilierung und Ausführung von Seiten erfolgt dynamisch durch ASP.NET zum Zeitpunkt ihrer erstmaligen Anforderung durch den Benutzer. Bei Änderungen an der Seite oder an Ressourcen, von denen sie abhängig ist, wird die Seite automatisch erneut kompiliert. Welche Klassen der Compiler erstellt, hängt davon ab, ob die Seite das Einzeldateimodell oder das Code-Behind-Modell verwendet.
ASP.NET unterstützt auch das Vorkompilieren einer Website, um die Leistung zu verbessern, eine Fehlerprüfung durchzuführen sowie das Bereitstellen der Site zu vereinfachen. Weitere Informationen finden Sie unter Übersicht über das Vorkompilieren einer ASP.NET-Website. Die Vorkompilierung funktioniert sowohl für das Einzeldateimodell als auch für das Code-Behind-Seitenmodell, und die Compilerausgabe ist bei beiden Modellen gleich.
Einzeldateiseiten
In einer Einzeldateiseite befinden sich das Markup, die serverseitigen Elemente und der Ereignisbehandlungscode alle in derselben ASPX-Datei. Beim Kompilieren der Seite generiert und kompiliert der Compiler eine neue Klasse, die von der Page-Basisklasse oder einer benutzerdefinierten Basisklasse abgeleitet ist, welche mit dem Inherits-Attribut der @ Page-Direktive definiert wurde. Wenn Sie im Anwendungsstammverzeichnis beispielsweise eine neue ASP.NET-Webseite mit dem Namen SamplePage1 erstellen, wird eine neue Klasse mit dem Namen ASP.SamplePage1_aspx von der Page-Klasse abgeleitet. Bei Seiten innerhalb von Unterordnern der Anwendung wird der Name des Unterordners als Teil der generierten Klasse verwendet. Die neu generierte Klasse enthält die Deklarationen für die Steuerelemente der ASPX-Seite sowie Ihre Ereignishandler und weiteren benutzerdefinierten Code.
Nach dem Generieren der Seite wird die generierte Klasse in eine Assembly kompiliert, die Assembly wird in die Anwendungsdomäne geladen, und anschließend wird die Seitenklasse instanziiert und ausgeführt, um eine Ausgabe an den Browser zu rendern. Wenn Sie Änderungen an der Seite vornehmen, die die generierte Klasse beeinflussen, sei es durch Hinzufügen von Steuerelementen oder Ändern des Codes, wird dadurch der kompilierte Klassencode ungültig, und es wird eine neue Klasse generiert. Weitere Informationen zum Kompilieren in ASP.NET finden Sie unter Übersicht über die ASP.NET-Kompilierung.
Die folgende Abbildung zeigt das Vererbungsmodell für die Seitenklasse in einer Einzeldatei-ASP.NET-Webseite:
Code-Behind-Seiten
Im Code-Behind-Modell befinden sich das Markup der Seite und serverseitige Elemente einschließlich Steuerelementdeklarationen in einer ASPX-Datei, während sich der Seitencode in einer separaten Codedatei befindet. Die Codedatei enthält eine partielle Klasse, d. h. eine Klassendeklaration mit dem Schlüsselwort partial (in Visual Basic Partial), wodurch angezeigt wird, dass sie nur einen Teil des gesamten Codes der Seitenklasse enthält. In der partiellen Klasse wird der Code hinzugefügt, den die Anwendung für die Seite benötigt. Dieser besteht normalerweise aus Ereignishandlern, kann aber auch beliebige Methoden und Eigenschaften enthalten, die benötigt werden.
Das Vererbungsmodell für Code-Behind-Seiten ist etwas komplizierter als das für Einzeldateiseiten. Hier das Modell:
Die Code-Behind-Datei enthält eine partielle Klasse, die von einer Basisseitenklasse erbt. Bei der Basisseitenklasse kann es sich um die Page-Klasse oder um eine Klasse handeln, die von Page abgeleitet ist.
Die ASPX-Datei enthält in der @ Page-Direktive ein Inherits-Attribut, das auf die partielle Code-Behind-Klasse zeigt.
Beim Kompilieren der Seite generiert ASP.NET eine partielle Klasse auf Basis der ASPX-Datei. Diese Klasse ist eine partielle Klasse der Code-Behind-Klassendatei. Die generierte partielle Klassendatei enthält Deklarationen für die Steuerelemente der Seite. Mit dieser partiellen Klasse kann die Code-Behind-Datei als Teil einer vollständigen Klasse verwendet werden, ohne dass die Steuerelemente explizit deklariert werden müssen.
Schließlich generiert ASP.NET noch eine weitere Klasse, die von der in Schritt 3 generierten Klasse erbt. Diese zweite generierte Klasse enthält den zum Erstellen der Seite erforderlichen Code. Die zweite generierte Klasse und die Code-Behind-Klasse werden in eine Assembly kompiliert, die ausgeführt wird, um die Ausgabe an den Browser zu rendern.
Die folgende Abbildung zeigt das Vererbungsmodell für die Seitenklasse in einer Code-Behind-ASP.NET-Webseite: