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

In diesem Artikel wird beschrieben, wie ASPX-Seiten entwickelt werden, die CodeBehind-Klassendateien in Microsoft ASP.NET-Anwendungen verwenden. Die Codebeispiele in diesem Artikel enthalten die Anforderungen für sowohl CodeBehind-Klassendateien mit vorkompilierten als auch CodeBehind-Klassendateien, die bei Bedarf kompiliert werden.

Original Version des Produkts:   ASP.NET
Ursprüngliche KB-Nummer:   308143

Anforderungen

In der folgenden Liste wird die empfohlene Hardware-, Software-und Netzwerkinfrastruktur beschrieben, 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 CodeBehindSampleserstellen.

  1. Starten Sie Visual Studio .net.
  2. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.
  3. Klicken Sie unter Project Typeauf Visual C#-Projekte. Klicken Sie unter Vorlagenauf ASP.NET-Webanwendung.
  4. Geben Sie im Feld Name den Namen CodeBehindSamplesein. Geben Sie im Feld Speicherort den Namen Servernameein. Wenn Sie den lokalen Server verwenden, lassen Sie den Speicherort als http://localhost .

Verwenden von CodeBehind-Klassendateien

Wenn Sie Code-Behind-Klassendateien mit ASPX-Seiten verwenden, können Sie den Präsentations Code von der Kern Anwendungslogik (oder Code-Behind) trennen. Die CodeBehind-Klassendatei wird kompiliert, sodass Sie erstellt und als Objekt verwendet werden kann. Dies ermöglicht den Zugriff auf die Eigenschaften, Methoden und 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, Codebehind wird der Direktive standardmäßig ein Attribut hinzugefügt @ Page . Das .NET Framework verwendet dieses Attribut nicht tatsächlich. Stattdessen verwendet Visual Studio .net dieses Attribut, um einen Verweis auf die zugeordnete Code-Behind-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 anzeigenklicken. Dieses Verhalten tritt auf, weil Visual Studio .net keinen Verweis mehr für die Klassendatei enthält, die für die Seite verwendet werden kann. Beachten Sie, dass die .NET Framework keine CodeBehind-Klassendateien verwendet, sondern wie Visual Studio .net diese Projektdateien verwaltet.

Verwenden des Inherits-Attributs mit vorkompilierten Klassen

Wenn Sie Ihre CodeBehind-Klassen in einer 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 das Erstellen eines neuen Webformulars veranschaulicht, das den vorkompilierten Ansatz verwendet und von der CodeBehind-Klasse erbt.

  1. Führen Sie die folgenden Schritte aus, um ein neues Webformular mit dem Namen " InheritSample. aspx " zu Ihrem Visual Studio .net-Projekt hinzuzufügen:

    1. Klicken Sie im Projektmappen-Explorermit der rechten Maustaste auf den Projektknoten, klicken Sie auf Hinzufügen, und klicken Sie dann auf Webformular hinzufügen.
    2. Geben Sie InheritSample. aspxin das Feld Name ein, und klicken Sie dann auf Öffnen.
  2. Wechseln Sie zur Entwurfs Ansicht, und fügen Sie dann der ASPX-Seite ein Webformular-Steuerelement Label 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 dem Ereignishandler in der CodeBehind-Datei den folgenden Code hinzu Page_Load :

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

    Hinweis

    Dieser Code zeigt nur, dass die CodeBehind-Klasse zur Laufzeit in den späteren 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 Standard Code ä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 InheritSamples im Namespace benannt ist CodeBehindSamples . Standardmäßig verwendet eine in Visual Studio .NET erstellte Webanwendung eine ProjectName.ClassName Struktur für den Inherits Attributwert.

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

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

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

  10. Klicken Sie im Projektmappen-Explorerauf, um den Ordner zu erweitern Bin . Die Assembly, die generiert wird, wenn Sie das Projekt aus dem vorherigen Abschnitt ( CodeBehindSamples.dll in diesem Beispiel) kompilieren, wird im Bin Ordner angezeigt.

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

    (Precompiled): Page_Load fired!

Verwenden Sie das src-Attribut, und kompilieren Sie bei Bedarf

Wenn Ihre CodeBehind-Klassendateien bei Bedarf anstelle von vorkompiliert 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.

Hinweis

Weitere Informationen zu potenziellen Problemen bei der Entwicklung ihrer Anwendungen in Visual Studio .net mit der Verwendung des Src Attributs finden Sie im Abschnitt References in diesem Artikel. Visual Studio .net wurde entwickelt, um die Vorkompilierung Ihres Anwendungscodes in einer Assembly zu nutzen, anstatt den in diesem Abschnitt beschriebenen Kompilierungs bei Bedarf Ansatz zu verwenden.

  1. Führen Sie die folgenden Schritte aus, um ein neues Webformular mit dem Namen SrcSample. aspx in Visual Studio .net zu Ihrem Projekt hinzuzufügen:

    1. Klicken Sie im Projektmappen-Explorermit der rechten Maustaste auf den Projektknoten, klicken Sie auf Hinzufügen, und klicken Sie dann auf Webformular hinzufügen.
    2. Geben Sie SrcSample. aspxin das Feld Name ein, und klicken Sie dann auf Öffnen.
  2. Wechseln Sie zur Entwurfs Ansicht, und fügen Sie dann der ASPX-Seite ein Webformular-Steuerelement Label 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 dem Ereignis in der CodeBehind-Datei 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 Standard Code ä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 dem Projekt. Dies geschieht nur in diesem Beispiel, um zusätzliche Fehler im Zusammenhang mit der CodeBehind-Seite der Datei Global. asax zu verhindern.

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

    Hinweis

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

  9. Wenn Sie die Schritte befolgt haben, die im Abschnitt Erben des Attributs mit vorkompilierten Klassen verwendet werden, 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 zur Problembehandlung in diesem Artikel.

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

    Der Typ "CodeBehindSamples. SrcSample" konnte nicht laden werden.

    Dieser Fehler tritt auf, weil die CodeBehind-Klassendatei noch nicht kompiliert wurde und Sie das Attribut noch nicht einbezogen haben, Src um auf die CodeBehind-Klassendatei zu verweisen.

  11. Fügen Sie das- Src Attribut @ Page wie folgt zur Direktive 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 Code-Behind-Klassendatei (SrcSample.aspx.cs) aufgelistet, und der Inherits Attributwert ist auf Reference festgelegt CodeBehindSamples.SrcSample .

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

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

    (Src): Page_Load fired!

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

Problembehandlung

  • Sie erhalten möglicherweise eine Fehlermeldung, die der folgenden ähnelt, wenn Sie die Anwendung in Visual Studio .net vorkompilieren und dann versuchen, den Kompilier bei Bedarf Ansatz mithilfe des Src Attributs anzuwenden:

    Compilerfehler: CS1595: "ProjectName. CodeBehindClassName" ist an mehreren Stellen definiert; Verwenden der Definition aus '% windir%: \WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.net files \ YourProjectName\d1444413\36fce407\assembly\dl2\009389be\ 231afa2d_d586c301 \ YourAssemblyName. DLL

    Beachten Sie, dass die Verzeichnisnamen nach YourProjectName im Pfad, der in der Fehlermeldung aufgeführt ist, wahrscheinlich unterschiedlich sein werden, da ASP.NET automatisch das Erstellen der Verzeichnisse und deren Namen verarbeitet.

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

    1. Löschen Sie das YourProjectName -Verzeichnis, auf das in der Fehlermeldung verwiesen wird. Möglicherweise müssen Sie den Befehl auch an iisreset der Eingabeaufforderung ausführen, bevor Sie diesen Schritt durchführen. Andernfalls wird möglicherweise die folgende Fehlermeldung angezeigt:

      GeneratedName.dllkann nicht gelöscht werden: Zugriff 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 die URL zur Seite manuell ein. Wählen Sie nicht die Ansicht im Browser oder die Optionen zum Durchsuchen mit der Visual Studio .NET IDE aus. Andernfalls wird die CodeBehind-Seite bei Verwendung von Visual Studio .NET 2003 in eine Assembly vorkompiliert, die sich Bin standardmäßig im Verzeichnis befindet.

    Hinweis

    Microsoft empfiehlt die Verwendung des vorkompilierten Ansatzes anstelle der Compile bei Bedarf-Methode (mithilfe des Src Attributs), wenn Sie Ihre Anwendungen mit Visual Studio .NET entwickeln, um diese Art von Problemen zu vermeiden.

  • Wenn Sie möchten oder Ihre Webformularseiten in einer einzelnen Datei enthalten müssen, entwickeln Sie die ASPX-Seiten so, dass Sie Ihren Code anstelle der CodeBehind-Klassendatei enthalten.

    Weitere Informationen zum Entwickeln von Einzeldatei-Webformularen in Visual Studio .net finden Sie in der technischen Dokumentation zu Visual Studio 2003 in Ruhestand.

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

    Der Typ "CodeBehindSamples. SrcSample" konnte nicht laden werden.

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

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

Informationsquellen