2010-04-09 15 views
1

J'ai un ensemble de pages aspx qui vivent chacune dans leur propre répertoire et font référence à un seul code aspx.cs derrière le fichier.Comment référencer la même classe CodeBehind à partir de plusieurs fichiers .aspx (et être capable de pré-compiler le site Web)?

Cela a fonctionné très bien précédemment parce que je n'ai jamais essayé de pré-compiler le site. IIS doit avoir compilé individuellement chaque aspx, en les reliant au contenu de App_Code mais en ne référençant jamais plus d'un aspx à la fois. Maintenant que j'essaie de pré-compiler le site Web à l'aide de projets de déploiement Web, je continue d'obtenir des erreurs concernant la même classe trouvée dans plusieurs assemblys.

Je ne peux pas simplement supprimer aspx.cs dans App_Code et le sous-classer car il ne serait pas capable de trouver les contrôles sur les pages .aspx lors de la compilation. Peut-être que je pourrais définir explicitement tous les contrôles sur la page dans le fichier .cs? Mais cela leur permettrait-il d'être correctement câblés?

D'autres idées sur la façon dont je peux référencer la même classe Page à partir de plusieurs pages .aspx et être en mesure de pré-compiler l'ensemble du site Web?

Modifier: Il semble que CodeFileBaseClass soit ce que je veux. Je vais déposer mes fichiers .cs dans App_Code, définir explicitement tous mes contrôles de pages, puis spécifier ces classes comme CodeFileBaseClass dans les fichiers aspx qui en héritent. Pensées?

Edit2: je suis venu avec une solution, mais comme je ne peux pas encore le marquer comme accepté, je voudrais toujours voir si quelqu'un d'autre pourrait arriver à d'autres solutions pour ce problème.

Répondre

2

La solution a consisté à:

  1. Prenez mes .aspx.cs et le copier dans App_Code avec un nouveau déclarer explicitement tout côté serveur nom de classe (FooPage)
  2. Modifier FooPage contrôle il fait référence.
  3. maintenant pour chacun de mes fichiers .aspx référençant les .aspx.cs d'origine:
    1. Créer un fichier .aspx.cs pour eux.
    2. La classe dans les .aspx.cs va hériter de la classe je me suis déplacé dans App_Code
    3. Set CodeFileBaseClass="Namespace.To.FooPage" dans le .aspx

Cela permet ASP.net de câbler facilement tout le serveur contrôles secondaires dans le .aspx aux membres protégés de la classe de base.

Maintenant, j'ai seulement 1 de chaque classe dans mon code et peut pré-compiler l'ensemble du site!

0

Je ne pense pas que vous serez en mesure d'effectuer une pré-compilation avec ce framework.

Vous pouvez créer un contrôle utilisateur qui remplit la fonction dont vous avez besoin, puis vous pouvez l'inclure sur les pages individuelles si nécessaire.

+0

Le problème avec le contrôle de l'utilisateur est que le point entier est que chaque fichier .aspx est unique en ce que la disposition de tout sur la page est différente.Évidemment, si ce n'était pas un site hérité, je l'aurais conçu différemment, mais même alors, certaines des différences entre les pages .aspx devraient être plus que CSS. Certains sont des changements pour nettoyer le Viewstate. – thelsdj