web-dev-qa-db-fra.com

CodeFile vs CodeBehind

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

Est-ce qu'un nouveau ou recommandé? Ou ont-ils un usage spécifique?

133
Soldarnal

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. C'est un bon modèle lorsque vous ne voulez pas que le code source soit visible en texte brut. Par exemple, lors de la livraison à un client à qui vous n'avez pas l'obligation de fournir du code.

CodeFile: Vous fournissez le fichier source avec la solution à déployer. Le runtime ASP.NET 2.0 compile le code si nécessaire. Les fichiers compilés se trouvent dans les fichiers Microsoft.NET [.NET version]\Temporary ASP.NET.

160
Shafqat Ahmed

Je travaille avec un projet d'application dans Visual Studio Express 2012 pour Web et avec .NET 4.0. Dans le code derrière les fichiers de mes pages de connexion et de modification de mot de passe, j'ai trouvé une situation dans laquelle j'avais besoin de CodeBehind et de CodeFile dans la déclaration.

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

CodeFile=login.aspx.cs

La page Web n'analyse pas et le navigateur affiche une erreur d'analyse. Peu importe que je compile le projet ou non.

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

CodeBehind=login.aspx.cs

Les références aux classes de sécurité telles que MembershipUser échouent à la compilation et lors de la tentative d'utilisation de intellisense avec une erreur du type "Le type ou l'espace de nom MembershipUser est introuvable". J'ai ajouté une référence à System.Web.ApplicationServices comme requis par le framework .Net 4.0.

Je devrais ajouter que ces fichiers gênants s’exécutent dans une application du site Web créée à l’aide de l’outil d’application IIS). Lorsque j’ouvre le site Web à partir de Visual Studio, je n’ai aucune difficulté à résoudre les erreurs d’analyseur ou de référence. Cette confusion ne se produit que lorsque j'ouvre l'application en tant que projet dans Visual Studio.

5
DavidHyogo

Le fichier codebehind doit être compilé avant d’être exécuté, mais dans src, nous n’avons pas besoin de compiler, puis d’exécuter. Il suffit de sauvegarder le fichier.

5
Ranjeet Prasad