Utiliser Visual C# .NET pour utiliser des fichiers de classe code-behind dans une application ASP.NET

Cet article explique comment développer des pages .aspx qui utilisent des fichiers de classe code-behind dans les applications Microsoft ASP.NET. Les exemples de code de cet article incluent la configuration requise pour les fichiers de classe code-behind qui sont précompilés et les fichiers de classe code-behind compilés à la demande.

              Version d’origine du produit : ASP.NET
Numéro de la base de connaissances d’origine : 308143

Configuration requise

La liste suivante décrit le matériel, les logiciels et l’infrastructure réseau recommandés dont vous avez besoin :

  • Windows
  • .NET Framework
  • Internet Information Services (IIS)

Créer une application web ASP.NET à l’aide de Visual C# .NET

Cette section montre comment créer une application web ASP.NET nommée CodeBehindSamples.

  1. Démarrez Visual Studio .NET.
  2. On the File menu, point to New, and then click Project.
  3. Sous Type de projet, cliquez sur Projets Visual C#. Sous Modèles, cliquez sur ASP.NET application web.
  4. Dans la zone Nom , tapez CodeBehindSamples. Dans la zone Emplacement , tapez ServerName. Si vous utilisez le serveur local, laissez l’Emplacement sur http://localhost.

Utiliser des fichiers de classe code-behind

Si vous utilisez des fichiers de classe code-behind avec .aspx pages, vous pouvez séparer le code de présentation de la logique d’application principale (ou code-behind). Le fichier de classe code-behind est compilé afin qu’il puisse être créé et utilisé en tant qu’objet. Cela permet d’accéder à ses propriétés, à ses méthodes et à ses gestionnaires d’événements. Pour que cela fonctionne, la page .aspx doit spécifier pour hériter de la classe de base code-behind. Pour ce faire, utilisez l’attribut Inherits pour la @ Page directive . La page .aspx hérite de la classe code-behind, et la classe code-behind hérite de la Page classe .

Par défaut, si vous utilisez Visual Studio .NET, un Codebehind attribut est ajouté à la @ Page directive . Le .NET Framework n’utilise pas réellement cet attribut. Au lieu de cela, Visual Studio .NET utilise cet attribut pour conserver une référence au fichier code-behind associé pour la page .aspx.

Pour montrer comment Visual Studio .NET utilise l’attribut Codebehind , supprimez l’attribut Codebehind . Vous ne pouvez plus cliquer avec le bouton droit sur la page .aspx, puis cliquer sur Afficher le code. Ce comportement se produit car Visual Studio .NET ne contient plus de référence pour le fichier de classe qu’il peut utiliser pour la page. N’oubliez pas que ce n’est pas la façon dont le .NET Framework utilise les fichiers de classe code-behind, mais la façon dont Visual Studio .NET gère ces fichiers projet.

Utiliser l’attribut Inherits avec des classes précompilées

Si vous précompilez vos classes code-behind dans un assembly, vous pouvez utiliser l’attribut Inherits pour spécifier la classe dont hériter. Dans ce scénario, vous n’avez pas besoin d’inclure le fichier de classe code-behind réel lorsque vous déployez l’application. Au lieu de cela, vous devez déployer l’assembly et la page .aspx. Vous devez placer l’assembly dans le Bin dossier de l’application lorsque vous déployez l’application.

Cette section montre comment créer un formulaire web qui utilise l’approche précompilée et hérite de la classe code-behind.

  1. Pour ajouter un nouveau formulaire web nommé InheritSample.aspx à votre projet Visual Studio .NET, procédez comme suit :

    1. Dans Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, cliquez sur Ajouter, puis cliquez sur Ajouter un formulaire web.
    2. Dans la zone Nom , tapez InheritSample.aspx, puis cliquez sur Ouvrir.
  2. Basculez en mode Création , puis ajoutez un contrôle Étiquette de formulaire web à la page .aspx.

  3. Cliquez avec le bouton droit sur la page .aspx, puis cliquez sur Afficher le code. Le fichier code-behind s’ouvre dans l’éditeur.

  4. Dans le fichier code-behind, ajoutez le code suivant au gestionnaire d’événements Page_Load :

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

    Remarque

    Ce code montre uniquement que la classe code-behind est impliquée dans l’exemple au moment de l’exécution dans les étapes ultérieures.

  5. Passez du fichier de classe code-behind à la page .aspx dans l’éditeur, puis basculez vers l’affichage HTML.

  6. En haut de la page, passez en revue le code de la @ Page directive . Le code doit être similaire au code par défaut suivant :

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

    Dans cet exemple, la page .aspx hérite de la classe code-behind nommée InheritSamples dans l’espace CodeBehindSamples de noms . Par défaut, une application web créée dans Visual Studio .NET utilise une ProjectName.ClassName structure pour la valeur d’attribut Inherits .

  7. Dans le menu Fichier , cliquez sur Enregistrer tout pour enregistrer le formulaire web et les autres fichiers projet associés.

  8. Dans l’IDE Visual Studio .NET, dans le menu Générer , cliquez sur Générer pour générer le projet.

  9. Dans le menu Projet , cliquez sur Afficher tous les fichiers.

  10. Dans Explorateur de solutions, cliquez pour développer le Bin dossier. L’assembly généré lorsque vous compilez le projet à partir de la section précédente (qui est CodeBehindSamples.dll dans cet exemple) apparaît dans le Bin dossier .

  11. Dans Visual Studio .NET, cliquez avec le bouton droit sur la page dans Explorateur de solutions, puis cliquez sur Afficher dans le navigateur pour exécuter le code. L’étiquette est remplie avec la valeur suivante :

    (Precompiled): Page_Load fired!

Utiliser l’attribut Src et compiler à la demande

Si vos fichiers de classe code-behind sont compilés à la demande au lieu d’être précompilés, vous devez utiliser l’attribut Src pour spécifier le chemin d’accès relatif du fichier de classe code-behind. Veillez à inclure le fichier de classe réel lorsque vous utilisez cette méthode pour déployer l’application.

Remarque

Pour plus d’informations sur les problèmes potentiels liés au développement de vos applications dans Visual Studio .NET avec l’utilisation de l’attribut Src , consultez la section Références de cet article. Visual Studio .NET est conçu pour tirer parti de la précompilation du code de votre application dans un assembly au lieu d’utiliser l’approche de compilation à la demande décrite dans cette section.

  1. Pour ajouter un nouveau formulaire web nommé SrcSample.aspx à votre projet dans Visual Studio .NET, procédez comme suit :

    1. Dans Explorateur de solutions, cliquez avec le bouton droit sur le nœud du projet, cliquez sur Ajouter, puis cliquez sur Ajouter un formulaire web.
    2. Dans la zone Nom , tapez SrcSample.aspx, puis cliquez sur Ouvrir.
  2. Basculez en mode Création , puis ajoutez un contrôle Étiquette de formulaire web à la page .aspx.

  3. Cliquez avec le bouton droit sur la page .aspx, puis cliquez sur Afficher le code. Le fichier code-behind s’ouvre dans l’éditeur.

  4. Dans le fichier code-behind, ajoutez le code suivant à l’événement Page_Load :

    private void Page_Load(object sender, System.EventArgs e)
    {
        Label1.Text = "(Src): Page_Load fired!";
    }
    
  5. Passez du fichier de classe code-behind à la page .aspx dans l’éditeur, puis basculez vers l’affichage HTML.

  6. En haut de la page, passez en revue le code de la @ Page directive . Le code doit être similaire au code par défaut suivant :

    <%@ Page language="c#" Codebehind="SrcSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample"%>
    
  7. Pour simplifier cet exemple, supprimez le fichier Global.asax de votre projet. Cette opération est effectuée uniquement dans cet exemple pour éviter les erreurs supplémentaires liées à la page code-behind du fichier Global.asax .

  8. Dans le menu Fichier , cliquez sur Enregistrer tout pour enregistrer le formulaire web et les autres fichiers projet associés.

    Remarque

    Étant donné que vous souhaitez que le fichier de classe code-behind de cet exemple soit compilé à la demande, ne générez pas la solution maintenant.

  9. Si vous avez suivi les étapes répertoriées dans la section Utiliser l’attribut Inherits avec des classes précompilées , vous devez supprimer l’assembly dans le Bin répertoire de l’application avant de suivre les autres étapes de cette section.

    Pour plus d’informations, consultez la section Résolution des problèmes de cet article.

  10. Pour exécuter la page, démarrez Internet Explorer, puis entrez manuellement l’URL de la page. Ne sélectionnez pas les options Afficher dans le navigateur ou Parcourir avec dans l’IDE Visual Studio .NET. Sinon, si vous utilisez Visual Studio .NET 2003, la page code-behind est précompilée dans un assembly qui se trouve dans le Bin répertoire par défaut. Après avoir affiché la page, vous recevez un message d’erreur similaire à celui ci-dessous :

    Impossible de charger le type « CodeBehindSamples.SrcSample ».

    Cette erreur se produit parce que le fichier de classe code-behind n’est pas encore compilé et que vous n’avez pas encore inclus l’attribut Src pour référencer le fichier de classe code-behind.

  11. Ajoutez l’attribut Src à la @ Page directive comme suit :

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

    L’attribut Src est répertorié avec le chemin relatif du fichier de classe code-behind (SrcSample.aspx.cs), et la valeur de l’attribut Inherits est définie pour référencer CodeBehindSamples.SrcSample.

  12. Dans le menu Fichier , cliquez sur Enregistrer tout pour enregistrer le formulaire web et les autres fichiers projet associés. N’oubliez pas que ne générez pas la solution, car vous souhaitez que le fichier de classe code-behind de cet exemple soit compilé à la demande.

  13. Pour exécuter la page, démarrez Internet Explorer, puis entrez manuellement l’URL de la page. Ne sélectionnez pas les options Afficher dans le navigateur ou Parcourir avec dans l’IDE Visual Studio .NET. Sinon, si vous utilisez Visual Studio .NET 2003, la page code-behind est précompilée dans un assembly qui se trouve dans le Bin répertoire par défaut. À ce stade, la page doit être chargée dans le navigateur et l’étiquette est remplie avec la valeur suivante :

    (Src): Page_Load fired!

    Le fichier de classe code-behind a maintenant été compilé à la demande et fonctionne correctement.

Résolution des problèmes

  • Vous pouvez recevoir un message d’erreur similaire au suivant si vous précompilez votre application dans Visual Studio .NET, puis essayez d’appliquer l’approche de compilation à la demande à l’aide de l’attribut Src :

    Message d’erreur du compilateur : CS1595 : « ProjectName.CodeBehindClassName » est défini à plusieurs emplacements ; using definition from '%windir% :\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\YourProjectName\d1444413\36fce407\assembly\dl2\009389be\231afa2d_d586c301\YourAssemblyName.DLL'

    Gardez à l’esprit que les noms de répertoires qui suivent YourProjectName dans le chemin d’accès répertorié dans le message d’erreur seront probablement différents, car ASP.NET gère automatiquement la création des répertoires et de leurs noms.

    Si vous utilisez l’attribut Src , vous devez suivre ces étapes pour résoudre le problème associé au message d’erreur :

    1. Supprimez le répertoire YourProjectName référencé dans le message d’erreur. Vous devrez peut-être également exécuter la iisreset commande à partir de l’invite de commandes avant d’effectuer cette étape. Sinon, le message d’erreur suivant peut s’afficher :

      Impossible de supprimerGeneratedName.dll: l’accès est refusé.
      Assurez-vous que le disque n’est pas plein ou protégé en écriture et que le fichier n’est pas en cours d’utilisation.

    2. Supprimez l’assembly dans le Bin répertoire de l’application.

    3. Pour exécuter la page, démarrez Internet Explorer, puis entrez manuellement l’URL de la page. Ne sélectionnez pas les options Afficher dans le navigateur ou Parcourir avec dans l’IDE Visual Studio .NET. Sinon, si vous utilisez Visual Studio .NET 2003, la page code-behind est précompilée dans un assembly qui se trouve dans le Bin répertoire par défaut.

    Remarque

    Microsoft vous recommande d’utiliser l’approche précompilée au lieu de la méthode de compilation à la demande (à l’aide de l’attribut Src ) si vous développez vos applications avec Visual Studio .NET pour éviter ces types de problèmes.

  • Si vous le souhaitez ou si vous devez contenir vos pages Web Form dans un seul fichier, développez votre .aspx pages pour qu’elles contiennent votre code au lieu du fichier de classe code-behind.

    Pour plus d’informations sur le développement d’Web Forms à fichier unique dans Visual Studio .NET, consultez la documentation technique de Visual Studio 2003 mise hors service.

  • Si vous ne précompilez pas le fichier de classe code-behind et si vous n’ajoutez pas l’attribut Src à la @ Page directive, ou si le chemin d’accès virtuel de l’attribut n’est pas correct, le message d’erreur suivant s’affiche :

    Impossible de charger le type « CodeBehindSamples.SrcSample ».

  • Lorsque vous déployez .aspx pages, si les fichiers de classe code-behind associés sont précompilés, vous devez uniquement déployer l’assembly dans le Bin dossier de l’application. Vous n’avez pas besoin de déployer les fichiers de classe code-behind réels avec l’application.

  • Lorsque vous déployez .aspx pages, si les fichiers de classe code-behind associés ne sont pas précompilés, vous devez déployer les fichiers de classe code-behind avec l’application. En outre, vous devez ajouter l’attribut Src à la @ Page directive, car le fichier de classe doit être disponible lorsqu’il est compilé à la demande.

References

  • Pour plus d’informations sur les assemblys, consultez Assemblys.

  • Pour plus d’articles, d’exemples et d’autres ressources liées à la programmation ASP.NET, consultez ASP.NET.

  • Pour plus d’informations sur la directive @ Page et ses différents attributs, consultez @ Page.

  • Pour plus d’informations sur la syntaxe Web Forms générale, consultez Syntaxe Web Forms.

  • Pour plus d’informations, consultez ASP.NET vue d’ensemble du modèle code-behind.