2010-07-19 5 views
20

Je suis vraiment un débutant donc ma question peut paraître ridicule .. Mais, je me demande comment fonctionnent les fichiers .aspx.designer.cs .. C'est la première fois que je travaille avec une solution contenant des fichiers .aspx .designer.cs pour chaque page. Donc, je comprends de déclaration des contrôles utilisés dans le .aspx pour le code-behind ..aspx.designer.cs comment ça marche?

Voici mes questions:

Pourquoi parfois des solutions doe ont des fichiers .aspx.designer.cs? (les fichiers sont-ils cachés ou non?)

J'ai souvent des problèmes avec ces fichiers, ils ne recréent pas automatiquement les déclarations de contrôles quand j'en ajoute dans le code .aspx, que fais-je de mal?

Répondre

25

Les fichiers .aspx.designer.xx constituent le pont pour les fichiers code-behind de formulaires Web ASP.NET et les fichiers de balisage .aspx. Tout contrôle serveur existant sur la page de balisage aspx est représenté ici. Les plus importants sont le nom et le type du contrôle serveur. Cela permet, en partie, à Visual Studio de donner à l'utilisateur IntelliSense dans la page code-behind des contrôles serveur créés au moment du design. Fonctionnement: Visual Studio génère ou conserve en synchronisation un membre protected dans le fichier .designer lorsque vous ajoutez/supprimez un contrôle serveur du concepteur.

protected global::System.Web.UI.WebControls.DropDownList DropDownList1; 

Notez que les fichiers .designer créer un partial class. Cela fournit le lien vers le fichier code-behind. Voilà comment Intellisense obtient le crochet entre le .aspx et le code-behind.

Vous pouvez régénérer votre fichier de concepteur: http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/

+0

Merci pour la réponse, mais est-il possible de demander manuellement de reconstruire le fichier de concepteur pour une page? – bAN

+1

@ban: vous pariez, voici comment régénérer votre fichier designer: http://www.undermyhat.org/blog/2009/07/tip-regenerate-aspx-designer-cs-files-when-corrupted/ –

18

Visual Studio a deux approches pour la création de sites Web: Projets Site Web et projets d'application Web. (OK, OK, trois si vous ajoutez MVC).

Seuls les projets d'application Web ont des fichiers designer.cs. Les sites Web ne les ont pas.

Le Web Application Type de projet a été ajouté dans Visual Studio 2003.

+2

ma question, merci! – Nestor

0

Comme p.campbell a-out, le fichier .designer.cs relie le fichier .aspx dans son fichier .aspx.cs CodeBehind. Sans le fichier .designer.cs, chaque contrôle de page .aspx dans le fichier CodeBehind .aspx.cs renverra l'erreur "n'existe pas dans le contexte actuel". La liaison dans .designer.cs est basée sur la propriété "Inherits" de la directive @ Page dans le fichier aspx avec l'espace de noms et la classe du fichier CodeBehind .aspx.cs. Le dernier segment de la propriété "Inherits" doit correspondre à la classe définie dans le fichier CodeBehind et le fichier .designer.cs, et les segments antérieurs doivent correspondre à l'espace de noms des fichiers .designer.cs et CodeBehind.

Exemple: myfile.aspx

<%@ Page Language="C#" 
    AutoEventWireup="true" 
    CodeBehind="myfile.aspx.cs" 
    Inherits="my.namespace.dot.classname" %> 

myfile.aspx.cs

namespace my.namespace.dot { 
    public partial class classname : Page { ... } 
} 

Note: la classe de fichier CodeBehind doit hériter de la classe Page, ou un de ses dérivés.

myfile.designer.aspx.cs

namespace my.namespace.dot { 
    public partial class classname { ... } 
} 

Note: la classe .designer.cs ne se soucie pas de l'héritage, juste que le nom de classe correspond aux fichiers et CodeBehind .aspx.

Vous pouvez régénérer un fichier .designer perdu comme celui-ci (w3cgeek.com "Regenerate designer.cs «):

  1. Créer un nouveau fichier vide dans la même répertoire que vos fichiers .aspx et .aspx.cs nommés » myfile.aspx.designer.cs "où" monfichier "est le nom des fichiers .aspx et .aspx.cs que vous voulez lier.
  2. Ajoutez un espace de noms avec une classe vide au nouveau fichier et assurez-vous que leurs noms correspondent à l'espace de noms et à la classe spécifiés dans les fichiers .aspx et .aspx.cs que vous liez.
  3. Enregistrez le fichier .designer.cs, apportez des modifications au fichier .aspx (par exemple, en ajoutant un espace) et enregistrez le fichier .aspx. Visual Studio doit automatiquement remplir le fichier .designer.cs avec tout le code nécessaire pour lier vos fichiers .aspx et CodeBehind.

Les erreurs "n'existe pas dans le contexte actuel" devraient maintenant disparaître!

EDIT: J'ai ajouté les instructions .designer.cs parce que le lien est mort qui a été publié à l'origine par p.campbell.