Partager via


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 les conditions requises pour les fichiers de classe code-behind qui sont précompilés et les fichiers de classe code-behind compilés à la demande.

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

Spécifications

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. Dans le menu Fichier , pointez sur Nouveau, puis cliquez sur Projet.
  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 en tant que http://localhost.

Utiliser des fichiers de classe code-behind

Si vous utilisez des fichiers de classe code-behind avec des pages .aspx, 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é comme 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 de 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 des fichiers de classe code-behind, mais comment 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 à partir de laquelle 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 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 Page_Load gestionnaire d’événements :

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

    Note

    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 la vue 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 d’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 de précompilés, vous devez utiliser l’attribut Src pour spécifier le chemin 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.

Note

Pour plus d’informations sur les problèmes potentiels lors du 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 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 la vue 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 empêcher des 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 d’autres fichiers projet associés.

    Note

    É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 le reste des é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 l’affichage dans le navigateur ou les options Parcourir avec à partir de l’IDE Visual Studio .NET. Sinon, si vous utilisez Visual Studio .NET 2003, la page code-behind est précompilée dans un assembly situé dans le Bin répertoire par défaut. Après avoir consulté la page, vous recevrez un message d’erreur similaire à ce qui suit :

    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 sur référence CodeBehindSamples.SrcSample.

  12. Dans le menu Fichier , cliquez sur Enregistrer tout pour enregistrer le formulaire web et d’autres fichiers projet associés. N’oubliez pas de générer 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 l’affichage dans le navigateur ou les options Parcourir avec à partir de l’IDE Visual Studio .NET. Sinon, si vous utilisez Visual Studio .NET 2003, la page code-behind est précompilée dans un assembly situé 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 été compilé correctement à la demande et fonctionne correctement.

Dépannage

  • Vous pouvez recevoir un message d’erreur similaire à ce qui suit 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 ; utilisation de la définition de '%windir% :\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\YourProjectName\d1444413\36fce407\assembly\dl2\009389be\231afa2d_d586c301\YourAssemblyName. DLL'

    N’oubliez pas que les noms de répertoires suivants YourProjectName dans le chemin répertorié dans le message d’erreur seront probablement différents, car ASP.NET gère automatiquement la génération 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 supprimer GeneratedName.dll : l’accès est refusé.
      Vérifiez que le disque n’est pas complet 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 l’affichage dans le navigateur ou les options Parcourir avec à partir de l’IDE Visual Studio .NET. Sinon, si vous utilisez Visual Studio .NET 2003, la page code-behind est précompilée dans un assembly situé dans le Bin répertoire par défaut.

    Note

    Microsoft vous recommande d’utiliser l’approche précompilée au lieu de la méthode compile à 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 souhaitez ou si vous devez contenir vos pages de formulaire web dans un seul fichier, développez vos pages .aspx pour contenir votre code au lieu du fichier de classe code-behind.

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

  • 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, vous recevrez le message d’erreur suivant :

    Impossible de charger le type « CodeBehindSamples.SrcSample ».

  • Lorsque vous déployez .aspx pages, si leurs 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 leurs 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 directive, car le fichier de classe doit être disponible lorsqu’il est compilé à la @ Page demande.

References

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

  • Pour plus d’articles, d’exemples et d’autres ressources liés à 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.