Share via


Web Forms-Codemodell

Eine Web Forms-Seite besteht aus zwei Teilen: visuelle Elemente (HTML, Serversteuerelemente und statischer Text) und die Programmierlogik der Seite. Visual Studio speichert jede dieser Komponenten in einer separaten Datei. Die visuellen Elemente werden in einer ASPX-Datei erstellt, und der Code befindet sich in einer separaten Klassendatei, eine so genannte Code-Behind-Klassendatei (.aspx.vb oder .aspx.cs).

Es ist auch möglich, die visuellen Elemente und Code in derselben Datei zu erstellen, die manchmal "Einzeldatei"-Web Forms-Seite genannt wird. Dieses Format einer Web Forms-Seite wird in Visual Studio nur eingeschränkt unterstützt. Einzelheiten finden Sie weiter unten unter "Einzeldatei-Web Forms-Seiten".

Hinweis   Visual Studio unterstützt kein sprachübergreifendes Kompilieren in Web Forms-Seiten und -Projekten. Das heißt, dass Sie eine Web Forms-Seite in Visual C# nicht in ein Webprojekt in Visual Basic einfügen können und umgekehrt.

Die ASP.NET-Seitenklasse

Obwohl eine Web Forms-Seite aus zwei separaten Dateien besteht, bilden diese jedoch beim Ausführen der Anwendung eine Einheit. Die CodeBehind-Klassendateien für alle Web Forms in einem Projekt werden in die DLL-Datei (Dynamic Link Library) kompiliert, die vom Projekt erstellt wird. Die ASPX-Seitendatei von Web Forms wird auf eine andere Art kompiliert. Wenn der Benutzer das erste Mal nach einer ASPX-Seite sucht, generiert ASP.NET automatisch eine .NET-Klassendatei, die die Seite darstellt, und kompiliert sie in eine zweite DLL-Datei. Die generierte Klasse für die ASPX-Seite erbt von der Code-Behind-Klasse, die in die DLL-Projektdatei kompiliert wurde.

Diese eine DLL-Datei wird auf dem Server ausgeführt, sobald die Web Forms-Seite angefordert wird. Zur Laufzeit verarbeitet diese DLL-Datei die eingehende Anforderung und reagiert, indem sie eine Ausgabe dynamisch erstellt und diese an den Browser oder das Clientgerät zurücksendet.

Wenn die Seite, wie gewöhnlich, Serversteuerelemente enthält, fungiert die abgeleitete Seitenklasse als Container für die Steuerelemente. Instanzen der Steuerelemente werden zur Laufzeit erstellt und geben die Ausgabe für den Browser oder das Clientgerät zurück.

Für Entwickler, die mit Active Server Pages (ASP) vertraut sind, stellt das ASP.NET-Seitengerüst etwas Neues dar. Das ASP-Modell ist ein mit Skriptcode erweitertes HTML-Modell. Die ASP-Seite besteht aus Skriptcode, wie ECMAScript (JScript, JavaScript) oder VBScript, der zusammen mit statischem HTML in derselben Datei vorhanden ist. Der ASP-Parser liest die Seite, interpretiert sie und führt nur den Skriptcode aus, um Ausgabeergebnisse zu erzielen. Anschließend führt ASP die Ausgabe des Scriptcodes mit der statischen, auf der Seite gefundenen HTML-Ausgabe zusammen, bevor die Ausgabe an den Browser oder an das Clientgerät zurückgesendet wird.

Im ASP.NET-Seitenklassenmodell ist die gesamte Web Forms-Seite tatsächlich ein ausführbares Programm, das eine Ausgabe generiert, die an den Browser oder das Clientgerät zurückgesendet wird. In diesem Modell durchläuft die Seite eine Reihe von Verarbeitungsphasen, die anderen Komponenten ähnlich sind: Initialisieren, Verarbeiten und Verwerfen. Allerdings gibt es zwei Unterschiede:

  • Die Seitenklasse führt diese Schritte bei jedem Aufruf der Seite aus. Die Seite wird initialisiert, verarbeitet und verworfen, sobald eine Schleife zum Server stattfindet.

  • Die Seitenklasse verfügt über eine eindeutige Phase: Darstellung. Diese findet am Ende des Lebenszyklus einer Seite statt, während die Ausgabe generiert wird. Weitere Informationen finden Sie unter Lebenszyklus bei der Ausführung von Steuerelementen.

    Hinweis   Aus Effizienzgründen können die für das erneute Erstellen der Seite erforderlichen Informationen im Cachespeicher zwischengespeichert werden. Diese Aktion ist jedoch vom Lebenszyklus unabhängig.

Ableiten von der Seitenklasse

Wenn Visual Studiodie Seiten- und Klassendateien für eine Web Forms-Seite erstellt, wird ein Code generiert, der von der Basisklasse Page erbt. Wenn Sie z. B. eine neue Web Forms-Seite erstellen und sie WebPage1 nennen, wird eine neue Klasse WebPage1 von System.Web.UI.Page abgeleitet.

Abhängig davon, ob Sie Visual Basic oder Visual C# für die Entwicklung gewählt haben, generiert Visual Studio eine der folgenden Codezeilen:

' Visual Basic
Public Class WebForm1
    Inherits System.Web.UI.Page
// C#
public class WebForm1 : System.Web.UI.Page

Die ASPX-Seitendatei erbt wiederum von der abgeleiteten WebPage1-Klasse. Die Beziehung zwischen der Page-Basisklasse, der abgeleiteten Klassendatei und der ASPX-Datei wird im folgenden Diagramm dargestellt.

Web Forms-Seitenstruktur und Page-Basisklasse

Da die ASPX-Datei dynamisch kompiliert wird, wenn ein Benutzer die Seite durchsucht, wird die Beziehung zu der Klassendatei mit Skriptdirektiven oben auf der Seite hergestellt. In Visual Studio wird die Beziehung zwischen ASPX-Dateien und Klassendateien automatisch erstellt und verwaltet, selbst dann, wenn Sie die Web Forms-Seite umbenennen. Insbesondere wird mit Hilfe des Inherits-Attributs der @ Page-Direktive die Klassendatei angegeben, von der die ASPX-Datei abgeleitet wird. Eine typische Direktive sieht folgendermaßen aus:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebApplication1.WebForm1"%>

Die Attribute "Codebehind", "Inherits" und "Src"

In Web Forms, die CodeBehind-Dateien verwenden, enthält die @ Page-Direktive (oder @ Control in Benutzersteuerelementdateien) Attribute, die die Beziehung der ASPX-Datei und ihrer CodeBehind-Datei festlegen. Dabei handelt es sich um die folgenden Attribute:

  • Codebehind   In Visual Studio verweist dieses Attribut auf den Namen einer Datei, die die Klasse für die Seite enthält. Wenn Sie beispielsweise in Visual Studio eine Web Forms-Seite mit dem Namen WebForm1 erstellen, zeigt das Codebehind-Attribut auf WebForm1.aspx.vb oder WebForm1.aspx.cs. Dieses Attribut wird lediglich vom Visual Studio Web Forms-Designer verwendet. Es informiert den Designer, wo er die Seitenklasse findet, so dass er für Sie eine Arbeitsinstanz erstellen kann. Das Attribut wird zur Laufzeit nicht verwendet.
  • Inherits   Gibt die Klasse an, von der die Seite abgeleitet wird. In Visual Studio wird wie im obigen Diagramm dargestellt auf eine Klasse in der Projektassembly (.dll) verwiesen.

Das oben dargestellte CodeBehind-Modell ist das in Visual Studio verwendete Modell. ASP.NET Framework unterstützt ein leicht abweichendes CodeBehind-Modell für Web Forms-Seiten. Im ASP.NET-CodeBehind-Modell befinden sich wie in Visual Studio die sichtbaren Elemente in einer ASPX-Datei und der Code in einer separaten Codedatei. Es ist jedoch kein Projekt vorhanden, und der Code wird nicht vorkompiliert. Stattdessen wird der Code in der VB- oder CS-Datei zur Laufzeit kompiliert, wenn die Seite erstmals vom Benutzer abgerufen wird.

Das Ableitungsmodell funktioniert wie oben beschrieben, mit dem Unterschied, dass die Web Forms-Klasse (WebForms1-Klasse in dem Diagramm) kein Teil einer Projektassembly ist. Stattdessen ist jede Seite eine separate Assembly. Es gibt keinen Unterschied darin, wie der Code in den beiden Modellen ausgeführt wird.

Im ASP.NET-Basiscodemodell ist kein Codebehind-Seitenattribut vorhanden, da dieses Attribut ausschließlich in Visual Studio verwendet wird. Um die ASPX-Datei an ihren zugehörigen Code zu binden, enthält die Seitendirektive ein Src-Attribut, das auf die Datei mit dem Quellcode für die Datei verweist.

Das Src-Attribut wird in Visual Studio nicht unterstützt. Wenn Sie in Visual Studio eine Web Forms-Seite importieren, die ein Src-Attribut enthält, gibt der Designer einen Fehler aus. Einzelheiten finden Sie unter Die Datei konnte nicht im Web Forms-Designer geladen werden.

Einzeldatei-Web Forms-Seiten

Zusätzlich zu den Seiten, die aus einer ASPX-Datei und einer separaten Klassendatei erstellt werden, unterstützt die ASP.NET-Architektur ein Einzeldateimodell, in dem sich die Benutzeroberflächenelemente und Code in derselben Datei befinden. Einzeldatei-Web Forms-Seiten ähneln in der Funktion Seiten, die aus zwei Dateien bestehen. Auf beiden Seitentypen werden z. B. dieselben Steuerelemente verwendet. Auch hier fordern Benutzer Seiten mit Hilfe derselben Erweiterung .aspx für den Dateinamen an. Die Seite wird auch mit serverseitigem Code ausgeführt, und HTML wird an den Client übertragen. Eine Einzeldateiseite kann leichter weitergegeben werden.

Bei der Verarbeitung von Einzeldateiseiten sind einige Unterschiede vorhanden:

  • Code für die Seite wird nicht in eine separate Klasse kompiliert, aus der die ASPX-Datei abgeleitet wird. Die ASPX-Datei wird stattdessen einfach von der Page-Klasse abgeleitet.
  • Bei der Weitergabe der Seite wird der Quellcode zusammen mit der Web Forms-Seite weitergegeben, da er sich physisch in der ASPX-Datei befindet. (Für den Benutzer ist dieser Code nicht sichtbar — nur die beim Ausführen der Seite dargestellten Ergebnisse werden an den Benutzer gesendet.)

Sie können in Visual Studio mit Einzeldatei-Web Forms-Seiten arbeiten, aber da Visual Studio am CodeBehind-Modell mit zwei Dateien orientiert ist, ist für Einzeldateiseiten nur eingeschränkte Unterstützung verfügbar. Unterschiede:

  • In Visual Studio können Einzeldatei-Web Forms-Seiten nicht direkt erstellt werden. Beim Erstellen einer neuen Seite erstellt Visual Studio standardmäßig eine separate ASPX-Datei und eine Klassendatei. Zum Erstellen einer Einzeldateiseite müssen Sie diese zunächst als Textdatei erstellen und dann die Erweiterung in .aspx ändern.
  • Sie können der Seite keine nicht visuellen Komponenten (z. B. Datenkomponenten) durch Ziehen mit der Maus aus der Toolbox hinzufügen, da der Web Forms-Designer diese nicht auf der Seite beibehält. Stattdessen müssen solche Komponenten im Code hinzugefügt werden.
  • Code wird in der HTML-Ansicht geschrieben, nicht im Code-Editor.
  • Beim Schreiben von Code wird IntelliSense nicht unterstützt — Syntaxüberprüfung, Anweisungsabschluss, Tabstopps oder Codeformatierung sind nicht verfügbar.
  • Ereignisse müssen manuell an Ereignishandler gebunden werden. Weder Doppelklicken zum Erstellen des Handlers für das Standardereignis eines Steuerelements noch Dropdownlisten von Klassen und Ereignissen im Code-Editor werden von Visual Studio für Einzeldatei-Web Forms-Seiten unterstützt.
  • Einige Debugfeatures wie die Möglichkeit, durch Zeigen mit der Maus auf eine Variable deren Wert sichtbar zu machen, werden nicht unterstützt.
  • Da der Code auf der Seite nicht in die Projektassembly kompiliert wird, werden Fehler während der Kompilierung nicht abgefangen, bis die Seite ausgeführt wird.

Weitere Informationen über Einzeldatei-Web Forms-Seiten finden Sie unter Arbeiten mit Einzeldatei-Web Forms-Seiten in Visual Studio .NET.

Siehe auch

Einführung in Web Forms-Seiten | Verarbeiten von Web Forms-Seiten | Kompilierung und Weitergabe von Webprojekten