2009-04-05 5 views
0

J'ai une petite application web.Créer des classes partielles dans Asp.Net

Voici ce que je veux faire: Créer des classes partielles pour diviser un code derrière un fichier. Pourquoi ne puis-je pas créer de cours partiels directement?

Si ce fichier est le codebehind:

using System; 
using System.Configuration.... 


public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     Test(); 
    } 
} 

Et aussi créer cette classe:

public partial class _Default 
{ 
    public void Test() 
    { 
    } 
} 

Je reçois un message d'erreur, test n'existe pas dans le contexte actuel.

Pourquoi est-ce?

Je vais tout faire fonctionner si je crée quelques classes partielles qui héritent de System.Web.UI.Page et puis héritent mon fichier codebehind de cette classe (le résultat des classes partielles). Est-ce le seul moyen?

Est-ce que quelque chose a à voir avec le fait que le codebehind et la page aspx sont dynamiquement compilés dans une classe?

Apprécierait si quelqu'un pouvait répondre à mon problème. Les choses marchent maintenant mais je préférerais créer les classes partielles au même "niveau" que le code derrière et éviter d'utiliser l'héritage.

Merci/John

(note que je souligner devant les deux classes, mais une seule est visible dans l'aperçu, je ne sais pas pourquoi ..)

+0

De quel espace de noms est la classe partielle dans laquelle vous créez? –

+0

Utilisez-vous un projet d'application Web ou un site Web? –

Répondre

1

1) Mettez vos classes partielles dans le répertoire App_Code (je ne l'ai jamais essayé cela)
2) Convertissez votre application dans un projet d'application Web à partir d'un site Web du projet

Un WAP est plus comme un dll ou Projet Winforms, qui est compilé avant l'exécution (bien que l'interface utilisateur puisse être mise à jour) et place des classes dans des espaces de noms. Les projets de site Web sont compilés en utilisant le compilateur aspnet qui fonctionne différemment (par exemple, des assemblys nommés dynamiquement) que le compilateur standard.

0

Ils devraient être sur la même espace de noms, si elles ne vont pas son travail.

Cordialement!

0

Okey. Eh bien, ce n'était pas un problème d'espace de nommage, mais merci pour cette suggestion.

Tout a bien fonctionné lorsque j'ai créé une application Web au lieu d'un site Web, merci beaucoup.

Par défaut, lorsque je lance de nouveaux projets, je sélectionne toujours créer un nouveau site web, je n'ai jamais eu de problème avec ça auparavant.

Alors, bien sûr, je vais devoir demander quelle est la différence, sauf celle mentionnée ci-dessus?

Y aura-t-il des inconvénients avec toujours aller avec des projets d'application web au lieu de projets de site Web?

Merci/John

+0

Beaucoup d'informations à ce sujet ici http://stackoverflow.com/search?q=website+web+application+project – Will

Questions connexes