Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
- Démarrez Visual Studio .NET.
- Dans le menu Fichier , pointez sur Nouveau, puis cliquez sur Projet.
- 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 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.
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 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
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.
Passez du fichier de classe code-behind à la page .aspx dans l’éditeur, puis basculez vers la vue 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 d’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 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.
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 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 la vue 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 empêcher des 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 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.
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.
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.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 sur référenceCodeBehindSamples.SrcSample
.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.
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 :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.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 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.