Freigeben über


Verwenden von Visual C# .NET zum Arbeiten mit CodeBehind-Klassendateien in einer ASP.NET Anwendung

In diesem Artikel wird beschrieben, wie Sie .aspx Seiten entwickeln, die CodeBehind-Klassendateien in Microsoft ASP.NET-Anwendungen verwenden. Die Codebeispiele in diesem Artikel enthalten die Anforderungen für CodeBehind-Klassendateien, die vorkompiliert sind, und CodeBehind-Klassendateien, die bei Bedarf kompiliert werden.

Ursprüngliche Produktversion: ASP.NET
Ursprüngliche KB-Nummer: 308143

Anforderungen

In der folgenden Liste sind die empfohlenen Hardware- und Software- und Netzwerkinfrastrukturen aufgeführt, die Sie benötigen:

  • Windows
  • .NET Framework
  • Internetinformationsdienste (IIS)

Erstellen einer ASP.NET Webanwendung mithilfe von Visual C# .NET

In diesem Abschnitt wird veranschaulicht, wie Sie eine neue ASP.NET Webanwendung mit dem Namen CodeBehindSamples erstellen.

  1. Starten Sie Visual Studio .NET.
  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
  3. Klicken Sie unter Projekttyp auf Visual C#-Projekte. Klicken Sie unter "Vorlagen" auf ASP.NET Webanwendung.
  4. Geben Sie im Feld "Name " den Namen "CodeBehindSamples" ein. Geben Sie im Feld "Speicherort " den Namen " Servername" ein. Wenn Sie den lokalen Server verwenden, lassen Sie den Speicherort als http://localhost.

Verwenden von CodeBehind-Klassendateien

Wenn Sie CodeBehind-Klassendateien mit .aspx Seiten verwenden, können Sie den Präsentationscode von der Kernanwendungslogik (oder CodeBehind) trennen. Die CodeBehind-Klassendatei wird kompiliert, sodass sie erstellt und als Objekt verwendet werden kann. Dies ermöglicht den Zugriff auf seine Eigenschaften, seine Methoden und seine Ereignishandler. Damit dies funktioniert, muss die .aspx Seite angeben, um von der CodeBehind-Basisklasse zu erben. Verwenden Sie dazu das Inherits Attribut für die @ Page Direktive. Die .aspx Seite erbt von der CodeBehind-Klasse, und die CodeBehind-Klasse erbt von der Page Klasse.

Wenn Sie Visual Studio .NET verwenden, wird der Direktive standardmäßig ein Codebehind Attribut hinzugefügt @ Page . Das .NET Framework verwendet dieses Attribut nicht. Stattdessen verwendet Visual Studio .NET dieses Attribut, um einen Verweis auf die zugeordnete CodeBehind-Datei für die .aspx-Seite beizubehalten.

Um zu veranschaulichen, wie Visual Studio .NET das Codebehind Attribut verwendet, entfernen Sie das Codebehind Attribut. Sie können nicht mehr mit der rechten Maustaste auf die .aspx Seite klicken und dann auf "Code anzeigen" klicken. Dieses Verhalten tritt auf, da Visual Studio .NET keinen Verweis mehr für die Klassendatei enthält, die sie für die Seite verwenden kann. Denken Sie daran, dass dies nicht der Fall ist, wie .NET Framework CodeBehind-Klassendateien verwendet, sondern wie Visual Studio .NET diese Projektdateien verwaltet.

Verwenden des Inherits-Attributs mit vorkompilierten Klassen

Wenn Sie Ihre CodeBehind-Klassen in eine Assembly vorkompilieren, können Sie das Inherits Attribut verwenden, um die Klasse anzugeben, von der geerbt werden soll. In diesem Szenario müssen Sie die tatsächliche CodeBehind-Klassendatei nicht einschließen, wenn Sie die Anwendung bereitstellen. Stattdessen müssen Sie die Assembly und die .aspx Seite bereitstellen. Sie müssen die Assembly in den Bin Ordner für die Anwendung einfügen, wenn Sie die Anwendung bereitstellen.

In diesem Abschnitt wird veranschaulicht, wie Sie ein neues Webformular erstellen, das den vorkompilierten Ansatz verwendet und von der CodeBehind-Klasse erbt.

  1. Führen Sie die folgenden Schritte aus, um ihrem Visual Studio .NET-Projekt ein neues Webformular hinzuzufügen, das InheritSample.aspx heißt:

    1. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, klicken Sie auf "Hinzufügen", und klicken Sie dann auf "Webformular hinzufügen".
    2. Geben Sie im Feld "Name" InheritSample.aspx ein, und klicken Sie dann auf "Öffnen".
  2. Wechseln Sie zur Entwurfsansicht, und fügen Sie dann der seite .aspx ein Webformularbezeichnungs-Steuerelement hinzu.

  3. Klicken Sie mit der rechten Maustaste auf die .aspx Seite, und klicken Sie dann auf "Code anzeigen". Die CodeBehind-Datei wird im Editor geöffnet.

  4. Fügen Sie in der CodeBehind-Datei dem Page_Load Ereignishandler den folgenden Code hinzu:

    private void Page_Load(object sender, System.EventArgs e)
    {
        Label1.Text = "(Precompiled): Page_Load fired!";
    }
    

    Notiz

    Dieser Code veranschaulicht nur, dass die CodeBehind-Klasse zur Laufzeit in den nachfolgenden Schritten an dem Beispiel beteiligt ist.

  5. Wechseln Sie von der CodeBehind-Klassendatei zur .aspx Seite im Editor, und wechseln Sie dann zur HTML-Ansicht.

  6. Überprüfen Sie oben auf der Seite den Code für die @ Page Direktive. Der Code sollte dem folgenden Standardcode ähneln:

    <%@ Page language="c#" Codebehind="InheritSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.InheritSample" %>
    

    In diesem Beispiel erbt die .aspx-Seite von der CodeBehind-Klasse, die CodeBehindSamples im Namespace benannt InheritSamples ist. Standardmäßig verwendet eine Webanwendung, die in Visual Studio .NET erstellt wird, eine ProjectName.ClassName Struktur für den Inherits Attributwert.

  7. Klicken Sie im Menü "Datei " auf " Alle speichern", um das Webformular und andere zugeordnete Projektdateien zu speichern.

  8. Klicken Sie in der .NET-IDE von Visual Studio im Menü "Erstellen " auf " Erstellen ", um das Projekt zu erstellen.

  9. Klicken Sie im Menü Projekt auf Alle Dateien anzeigen.

  10. Klicken Sie in Projektmappen-Explorer, um den Bin Ordner zu erweitern. Die Assembly, die beim Kompilieren des Projekts aus dem vorherigen Abschnitt (in diesem Beispiel CodeBehindSamples.dll) generiert wird, wird im Bin Ordner angezeigt.

  11. Klicken Sie in Visual Studio .NET mit der rechten Maustaste auf die Seite in Projektmappen-Explorer, und klicken Sie dann auf "Im Browser anzeigen", um den Code auszuführen. Die Bezeichnung wird mit dem folgenden Wert aufgefüllt:

    (Precompiled): Page_Load fired!

Verwenden des Src-Attributs und Kompilieren bei Bedarf

Wenn Ihre CodeBehind-Klassendateien bei Bedarf kompiliert werden, müssen Sie das Src Attribut verwenden, um den relativen Pfad der CodeBehind-Klassendatei anzugeben. Stellen Sie sicher, dass Sie die tatsächliche Klassendatei einschließen, wenn Sie diese Methode verwenden, um die Anwendung bereitzustellen.

Notiz

Weitere Informationen zu potenziellen Problemen beim Entwickeln Ihrer Anwendungen in Visual Studio .NET mit dem Src Attribut finden Sie im Abschnitt "Verweise " in diesem Artikel. Visual Studio .NET wurde entwickelt, um den Anwendungscode vorab in eine Assembly zu kompilieren, anstatt den in diesem Abschnitt beschriebenen Kompilierungsansatz bei Bedarf zu verwenden.

  1. Führen Sie die folgenden Schritte aus, um ihrem Projekt in Visual Studio .NET ein neues Webformular hinzuzufügen, das SrcSample.aspx heißt:

    1. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, klicken Sie auf "Hinzufügen", und klicken Sie dann auf "Webformular hinzufügen".
    2. Geben Sie im Feld "Name" SrcSample.aspx ein, und klicken Sie dann auf "Öffnen".
  2. Wechseln Sie zur Entwurfsansicht, und fügen Sie dann der seite .aspx ein Webformularbezeichnungs-Steuerelement hinzu.

  3. Klicken Sie mit der rechten Maustaste auf die .aspx Seite, und klicken Sie dann auf "Code anzeigen". Die CodeBehind-Datei wird im Editor geöffnet.

  4. Fügen Sie in der CodeBehind-Datei dem Ereignis den folgenden Code hinzu Page_Load :

    private void Page_Load(object sender, System.EventArgs e)
    {
        Label1.Text = "(Src): Page_Load fired!";
    }
    
  5. Wechseln Sie von der CodeBehind-Klassendatei zur .aspx Seite im Editor, und wechseln Sie dann zur HTML-Ansicht.

  6. Überprüfen Sie oben auf der Seite den Code für die @ Page Direktive. Der Code sollte dem folgenden Standardcode ähneln:

    <%@ Page language="c#" Codebehind="SrcSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample"%>
    
  7. Um dieses Beispiel zu vereinfachen, löschen Sie die Datei "Global.asax " aus Ihrem Projekt. Dies geschieht nur in diesem Beispiel, um zusätzliche Fehler zu verhindern, die mit der CodeBehind-Seite der Datei "Global.asax " zusammenhängen.

  8. Klicken Sie im Menü "Datei " auf " Alle speichern", um das Webformular und andere zugeordnete Projektdateien zu speichern.

    Notiz

    Da die CodeBehind-Klassendatei für dieses Beispiel bei Bedarf kompiliert werden soll, erstellen Sie die Lösung jetzt nicht.

  9. Wenn Sie die Im Abschnitt "Use the Inherits"-Attribut mit vorkompilierten Klassen aufgeführten Schritte ausgeführt haben, müssen Sie die Assembly im Bin Verzeichnis der Anwendung löschen, bevor Sie die restlichen Schritte in diesem Abschnitt ausführen.

    Weitere Informationen finden Sie im Abschnitt "Problembehandlung" in diesem Artikel.

  10. Um die Seite auszuführen, starten Sie Internet Explorer, und geben Sie dann manuell die URL der Seite ein. Wählen Sie nicht die Ansicht im Browser oder die Optionen "Durchsuchen mit " aus der .NET-IDE von Visual Studio aus. Andernfalls wird die CodeBehind-Seite bei Verwendung von Visual Studio .NET 2003 standardmäßig in eine Assembly vorkompiliert, die Bin sich standardmäßig im Verzeichnis befindet. Nach dem Anzeigen der Seite erhalten Sie eine Fehlermeldung, die ähnlich ist wie unten:

    Der Typ 'CodeBehindSamples.SrcSample' konnte nicht geladen werden.

    Dieser Fehler tritt auf, da die CodeBehind-Klassendatei noch nicht kompiliert ist und Sie das Src Attribut noch nicht zum Verweisen auf die CodeBehind-Klassendatei eingeschlossen haben.

  11. Fügen Sie das Src Attribut der @ Page Direktive wie folgt hinzu:

    <%@ Page language="c#" Codebehind="SrcSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample" Src="SrcSample.aspx.cs"%>
    

    Das Src Attribut wird mit dem relativen Pfad der CodeBehind-Klassendatei (SrcSample.aspx.cs) aufgelistet, und der Inherits Attributwert wird auf den Verweis CodeBehindSamples.SrcSamplefestgelegt.

  12. Klicken Sie im Menü "Datei " auf " Alle speichern", um das Webformular und andere zugeordnete Projektdateien zu speichern. Denken Sie daran, die Lösung nicht zu erstellen, da die CodeBehind-Klassendatei für dieses Beispiel bei Bedarf kompiliert werden soll.

  13. Um die Seite auszuführen, starten Sie Internet Explorer, und geben Sie dann manuell die URL der Seite ein. Wählen Sie nicht die Ansicht im Browser oder die Optionen "Durchsuchen mit " aus der .NET-IDE von Visual Studio aus. Andernfalls wird die CodeBehind-Seite bei Verwendung von Visual Studio .NET 2003 standardmäßig in eine Assembly vorkompiliert, die Bin sich standardmäßig im Verzeichnis befindet. An diesem Punkt sollte die Seite im Browser geladen werden, und die Bezeichnung wird mit dem folgenden Wert aufgefüllt:

    (Src): Page_Load fired!

    Die CodeBehind-Klassendatei wurde jetzt bei Bedarf kompiliert und funktioniert ordnungsgemäß.

Problembehandlung

  • Möglicherweise erhalten Sie eine Fehlermeldung, die dem folgenden ähnelt, wenn Sie Ihre Anwendung in Visual Studio .NET vorkompilieren und dann versuchen, den Kompilierungsansatz bei Bedarf mithilfe des Src Attributs anzuwenden:

    Compilerfehlermeldung: CS1595: "ProjectName.CodeBehindClassName" wird an mehreren Stellen definiert; verwenden der Definition von '%windir%:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\YourProjectName\d1444413\36fce407\assembly\dl2\009389be\231afa2d_d586c301\YourAssemblyName. DLL'

    Denken Sie daran, dass die Verzeichnisnamen, die IhremProjectName folgen, im Pfad, der in der Fehlermeldung aufgeführt ist, wahrscheinlich unterschiedlich sind, da ASP.NET die Erstellung der Verzeichnisse und deren Namen automatisch behandelt.

    Wenn Sie das Attribut verwenden, müssen Sie die Src folgenden Schritte ausführen, um das Problem zu beheben, das der Fehlermeldung zugeordnet ist:

    1. Löschen Sie das Verzeichnis "YourProjectName ", auf das in der Fehlermeldung verwiesen wird. Möglicherweise müssen Sie auch den iisreset Befehl über die Eingabeaufforderung ausführen, bevor Sie diesen Schritt ausführen. Sie erhalten andernfalls unter Umständen die folgende Fehlermeldung:

      GeneratedName.dll kann nicht gelöscht werden: Der Zugriff wurde verweigert.
      Stellen Sie sicher, dass der Datenträger nicht vollständig oder schreibgeschützt ist und dass die Datei derzeit nicht verwendet wird.

    2. Löschen Sie die Assembly im Bin Verzeichnis der Anwendung.

    3. Um die Seite auszuführen, starten Sie Internet Explorer, und geben Sie dann manuell die URL zu der Seite ein. Wählen Sie nicht die Ansicht im Browser oder die Optionen "Durchsuchen mit " aus der .NET-IDE von Visual Studio aus. Andernfalls wird die CodeBehind-Seite bei Verwendung von Visual Studio .NET 2003 standardmäßig in eine Assembly vorkompiliert, die Bin sich standardmäßig im Verzeichnis befindet.

    Notiz

    Microsoft empfiehlt, den vorkompilierten Ansatz anstelle der Kompilierungsmethode (mithilfe des Src Attributs) zu verwenden, wenn Sie Ihre Anwendungen mit Visual Studio .NET entwickeln, um diese Arten von Problemen zu vermeiden.

  • Wenn Sie Ihre Webformularseiten in einer einzelnen Datei enthalten müssen, entwickeln Sie Ihre .aspx Seiten so, dass sie Ihren Code anstelle der CodeBehind-Klassendatei enthalten.

    Weitere Informationen zum Entwickeln von Einzeldateiwebformularen in Visual Studio .NET finden Sie in der technischen Dokumentation zu Visual Studio 2003.

  • Wenn Sie die CodeBehind-Klassendatei nicht vorkompilieren und das Src Attribut nicht der @ Page Direktive hinzufügen oder der virtuelle Pfad für das Attribut nicht korrekt ist, wird die folgende Fehlermeldung angezeigt:

    Der Typ 'CodeBehindSamples.SrcSample' konnte nicht geladen werden.

  • Wenn Sie .aspx Seiten bereitstellen, müssen Sie die Assembly nur im Bin Ordner der Anwendung bereitstellen, wenn die zugehörigen CodeBehind-Klassendateien vorkompiliert sind. Sie müssen die tatsächlichen CodeBehind-Klassendateien nicht mit der Anwendung bereitstellen.

  • Wenn Sie .aspx Seiten bereitstellen, müssen Sie die CodeBehind-Klassendateien mit der Anwendung bereitstellen, wenn die zugehörigen CodeBehind-Klassendateien nicht vorkompiliert sind. Darüber hinaus müssen Sie das Src Attribut der @ Page Direktive hinzufügen, da die Klassendatei verfügbar sein muss, wenn sie bei Bedarf kompiliert wird.

References

  • Weitere Informationen zu Assemblys finden Sie unter "Assemblys".

  • Weitere Artikel, Beispiele und andere Ressourcen im Zusammenhang mit ASP.NET Programmierung finden Sie unter ASP.NET.

  • Weitere Informationen zur @Page-Direktive und den verschiedenen Attributen finden Sie unter @Page.

  • Weitere Informationen zur allgemeinen Web Forms-Syntax finden Sie unter Web Forms Syntax.

  • Weitere Informationen finden Sie unter ASP.NET CodeBehind-Modellübersicht.