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 Microsoft ASP.NET applications. 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 la ko d’origine :   308143

Conditions requises

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 Project Tapez, cliquez sur Projets C# visual. 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 comme 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 de l’application principale (ou code-behind). Le fichier de classe code-behind est compilé de sorte 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 handlers d’événements. Pour que cela fonctionne, la page .aspx doit spécifier d’hériter de la classe de base code-behind. Pour ce faire, utilisez Inherits l’attribut 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 attribut Codebehind 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 Codebehind l’attribut, supprimez Codebehind l’attribut. 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 .NET Framework utilise les fichiers de classe code-behind, mais la façon dont Visual Studio .NET gère ces fichiers de 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 pour spécifier la classe de laquelle Inherits 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 à Visual Studio projet .NET, suivez les étapes suivantes :

    1. Dans l’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 Page_Load handler d’événements :

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

    Notes

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

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

  6. En haut de la page, examinez 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 CodeBehindSamples l’espace de noms. Par défaut, une application web créée dans Visual Studio .NET utilise une ProjectName.ClassName structure pour la valeur Inherits d’attribut.

  7. Dans le menu Fichier, cliquez sur Enregistrer tout pour enregistrer le formulaire Web et d’autres fichiers de projet associés.

  8. Dans le Visual Studio IDE .NET, dans le menu Build, cliquez sur Créer pour créer le projet.

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

  10. Dans l’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 l’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 pour spécifier le chemin d’accès relatif du fichier de classe Src code-behind. Veillez à inclure le fichier de classe réel lorsque vous utilisez cette méthode pour déployer l’application.

Notes

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, voir la Src section Références dans cet article. Visual Studio .NET est conçu pour tirer parti de la précompilation de votre code d’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, suivez les étapes suivantes :

    1. Dans l’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 à Page_Load l’événement :

    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 de l’éditeur, puis basculez en mode HTML.

  6. En haut de la page, examinez 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 procédure 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 d’autres fichiers de projet associés.

    Notes

    Étant donné que vous souhaitez que le fichier de classe code-behind pour cet exemple soit compilé à la demande, ne créez 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 répertoire de l’application avant de suivre le reste des étapes de cette Bin section.

    Pour plus d’informations, consultez la section Dépannage 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 Visual Studio IDE .NET. Sinon, si vous utilisez Visual Studio .NET 2003, la page code-behind sera précompilée dans un assembly qui se trouve dans le répertoire par Bin défaut. Après avoir affiché la page, vous recevrez un message d’erreur semblable à celui ci-dessous :

    Le type « CodeBehindSamples.SrcSample » n’a pas pu être chargé.

    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 pour référencer le fichier de Src classe code-behind.

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

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

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

  12. Dans le menu Fichier, cliquez sur Enregistrer tout pour enregistrer le formulaire Web et d’autres fichiers de projet associés. N’oubliez pas de ne pas créer 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 Visual Studio IDE .NET. Sinon, si vous utilisez Visual Studio .NET 2003, la page code-behind sera précompilée dans un assembly qui se trouve dans le répertoire par Bin 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é à la demande et fonctionne correctement.

Résolution des problèmes

  • Vous pouvez recevoir un message d’erreur semblable 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 Src l’attribut :

    Message d’erreur du compilateur : CS1595 : «ProjectName.CodeBehindClassName» est défini à plusieurs endroits ; 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 des 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 leurs noms.

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

    1. Supprimez le répertoire YourProjectName référencé dans le message d’erreur. Vous de devez également exécuter la commande à partir iisreset de l’invite de commandes avant d’effectuer cette étape. Sinon, vous risquez de recevoir le message d’erreur suivant :

      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 Bin le 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 Visual Studio IDE .NET. Sinon, si vous utilisez Visual Studio .NET 2003, la page code-behind sera précompilée dans un assembly qui se trouve dans le répertoire Bin par défaut.

    Notes

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

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

    Pour plus d’informations sur le développement de fichiers Web Forms dans Visual Studio .NET, voir Visual Studio 2003 Retired Technical documentation.

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

    Le type « CodeBehindSamples.SrcSample » n’a pas pu être chargé.

  • Lorsque vous déployez des pages .aspx, si leurs fichiers de classe code-behind associés sont précompilés, vous devez uniquement déployer l’assembly dans le dossier de Bin 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 des pages .aspx, 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 à la directive, car le fichier de classe doit être disponible lorsqu’il Src est compilé à la @ Page demande.

Références