137 votes

CodeFile vs CodeBehind

Quelle est la différence entre CodeFile \="file.ascx.cs" et CodeBehind \="file.ascx.cs" dans la déclaration d'un contrôle utilisateur ASP.NET ?

L'un d'entre eux est-il plus récent ou recommandé ? Ou ont-ils un usage spécifique ?

162voto

Shafqat Ahmed Points 1103

CodeBehind : Doit être compilé (modèle ASP.NET 1.1). Le binaire compilé est placé dans le dossier bin du site web. Vous devez effectuer une compilation dans Visual Studio avant de déployer le site. C'est un bon modèle lorsque vous ne voulez pas que le code source soit visible en texte clair. Par exemple, lorsque vous livrez à un client à qui vous n'avez pas l'obligation de fournir le code.

CodeFile : Vous fournissez le fichier source avec la solution pour le déploiement. Le moteur d'exécution ASP.NET 2.0 compile le code lorsque cela est nécessaire. Les fichiers compilés se trouvent à l'adresse Microsoft.NET[.NET version] \Temporary Fichiers ASP.NET.

5voto

Le fichier Codebehind doit être compilé avant d'être exécuté, mais dans le fichier src, il n'est pas nécessaire de compiler puis d'exécuter le fichier, il suffit de le sauvegarder.

5voto

DavidHyogo Points 1213

Je travaille avec un projet d'application dans Visual Studio Express 2012 For Web et j'utilise .NET 4.0. Dans les fichiers de code pour mes pages de connexion et de changement de mot de passe, j'ai trouvé une situation où j'avais besoin à la fois de CodeBehind et de CodeFile dans la déclaration.

Si je n'ajoute pas de référence à un fichier de code comme

CodeFile=login.aspx.cs

La page web n'est pas analysée et le navigateur affiche une erreur d'analyse. Le fait que je compile le projet ou non n'a pas d'importance.

Si je n'ajoute pas de code derrière la référence comme

CodeBehind=login.aspx.cs

Les références à des classes de sécurité telles que MembershipUser échouent à la fois au moment de la compilation et lors de l'utilisation d'intellisense avec une erreur telle que "The type or namespace MembershipUser cannot be found" (le type ou l'espace de noms MembershipUser ne peut pas être trouvé). J'ai ajouté une référence à System.Web.ApplicationServices comme l'exige le framework .Net 4.0.

Je dois ajouter que ces fichiers problématiques s'exécutent dans une application du site web créée à l'aide de l'outil IIS Application. Lorsque j'ouvre le site web à partir de Visual Studio, je n'ai aucun problème avec les erreurs d'analyseur syntaxique ou les erreurs de référence. Cette confusion ne se produit que lorsque j'ouvre l'application en tant que projet dans Visual Studio.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X