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.
- Démarrez Visual Studio .NET.
- On the File menu, point to New, and then click Project.
- Sous Type de projet, cliquez sur Projets Visual C#. Sous Modèles, cliquez sur ASP.NET application web.
- 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.
Pour ajouter un nouveau formulaire web nommé InheritSample.aspx à votre projet Visual Studio .NET, procédez comme suit :
- 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.
- Dans la zone Nom , tapez InheritSample.aspx, puis cliquez sur Ouvrir.
Basculez en mode Création , puis ajoutez un contrôle Étiquette de formulaire web à la page .aspx.
Cliquez avec le bouton droit sur la page .aspx, puis cliquez sur Afficher le code. Le fichier code-behind s’ouvre dans l’éditeur.
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.
Passez du fichier de classe code-behind à la page .aspx dans l’éditeur, puis basculez vers l’affichage HTML.
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’espaceCodeBehindSamples
de noms . Par défaut, une application web créée dans Visual Studio .NET utilise uneProjectName.ClassName
structure pour la valeur d’attributInherits
.Dans le menu Fichier , cliquez sur Enregistrer tout pour enregistrer le formulaire web et les autres fichiers projet associés.
Dans l’IDE Visual Studio .NET, dans le menu Générer , cliquez sur Générer pour générer le projet.
Dans le menu Projet , cliquez sur Afficher tous les fichiers.
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 leBin
dossier .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.
Pour ajouter un nouveau formulaire web nommé SrcSample.aspx à votre projet dans Visual Studio .NET, procédez comme suit :
- 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.
- Dans la zone Nom , tapez SrcSample.aspx, puis cliquez sur Ouvrir.
Basculez en mode Création , puis ajoutez un contrôle Étiquette de formulaire web à la page .aspx.
Cliquez avec le bouton droit sur la page .aspx, puis cliquez sur Afficher le code. Le fichier code-behind s’ouvre dans l’éditeur.
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!"; }
Passez du fichier de classe code-behind à la page .aspx dans l’éditeur, puis basculez vers l’affichage HTML.
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"%>
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 .
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.
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.
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.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’attributInherits
est définie pour référencerCodeBehindSamples.SrcSample
.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.
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 :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.Supprimez l’assembly dans le
Bin
répertoire de l’application.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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour