2009-07-01 5 views
2

J'essaie de créer une classe générale, à partir de laquelle toutes mes pages ASP.Net héritent afin que je puisse partager des fonctions sur plusieurs pages. Pour ce faire, je voudrais créer une nouvelle classe qui hérite de System.Web.UI.Page (les pages de contenu doivent en hériter), puis mes pages de contenu hériteront de la classe nouvellement créée.Pages Masterpage et Content héritant d'une seule classe

Mon problème est que la page Master hérite de System.Web.UI.Masterpage.

Comment puis-je configurer mon projet de façon à ce que les pages de contenu et les pages Masterpage et les fonctions d'utilisation de la classe générale soient disponibles?

S'il vous plaît ne pas hésiter à demander si je ne sais pas!

Merci!

E

Répondre

2

D'abord, ne sais pas pourquoi vous voulez faire. Par leur fonction, les pages maîtres doivent avoir des fonctions qui ne concernent généralement pas vos pages et vice versa. Et si vous avez juste besoin de fonctionnalités communes qui ne dépendent pas de la page, vous pouvez simplement créer une classe statique (comme Math) ou une classe d'aide que vous pouvez implémenter dans les classes de base personnalisées MasterPage et Page. Mais votre seule véritable option est de créer deux classes de base personnalisées. Un qui hérite de MasterPage et l'autre de Page. Les deux devront implémenter une interface ICommon que vous créez. Créez ensuite une autre classe statique à laquelle vous pouvez attribuer toutes les fonctions.

Solution de Yucky mais c'est la seule que je peux penser.

EDIT

est ici une meilleure solution

public class Helper 
{ 
    public static int getUserID(...) 
    { 
     // ... Code to get User ID 
    } 
} 

Dans vos MasterPages et pages utilisent

int UserID = Helper.getUserID(...); 
+0

Je veux faire cela parce que j'ai beaucoup de fonctions et de données que je veux pouvoir utiliser à travers les pages Web. Sans cela, je devrais créer une fonction getUserID, sur chaque page que je veux obtenir un ID utilisateur. Pour les fonctions spécifiques à la page, je les laisserai dans le fichier CodeBehind. –

+0

Étant donné que getUserID ne dépend pas de la page, vous pouvez simplement créer une classe statique à laquelle ils peuvent accéder. Je vais éditer mon post. –

+0

Parfait. Merci –

0

Je ne pense pas que vous pouvez faire cela, le MasterPage hérite UserControl et La page hérite de TemplateControl. Comme Spencer l'a dit, je voudrais simplement créer une classe Helper/Utility.

0

Je sais Il est trop tard, mais je veux juste partager quelques-uns pourraient rencontrer la même chose. Ce est un exemple de code en utilisant des fonctions d'extension:

public static void Commonfunction(this TemplateControl ctl) 
{ 
     // Your Code here 
} 

appeler cette fonction comme

this.Commonfunction(); 

dans une page ou MasterPage.

0

Bien que la question date de 5 ans, je voulais partager une autre option pour les futurs lecteurs. D'après ce que vous avez expliqué, je suppose que ce que vous appelez MasterPage est comme un cadre qui charge la page de contenu sur un côté de l'écran, par exemple.Si j'ai raison, vous pouvez créer une classe BaseMasterPage avec votre fonctionnalité, puis créer un MasterPage pour vos pages de contenu (que vous pouvez également utiliser pour placer une partie du code de vos pages actuelles). La prochaine étape est évidemment de faire votre MasterPage actuel et, disons, ContentMasterPage hériter de ce BaseMasterPage. Ainsi, vous pouvez avoir, par exemple, une propriété LoggedUser dans votre page de cadre et dans les pages de contenu.

Questions connexes