2010-05-27 4 views
2

Je travaille sur une application Web. Un de mes collègues a écrit des pages de formulaires asp.net. Les classes de page héritent toutes de BasePageClass, qui hérite bien sûr de la classe Page. Je souhaite ajouter quelques contrôleurs MVC que l'on m'a dit besoin d'utiliser la même logique implémentée dans le BasePageClass. Habituellement, je voudrais hériter des fonctions dans le BasePageClass dans les classes de contrôleur, mais cela casse la hiérarchie d'héritage.Héritage de page dans des formulaires asp.net mixtes et une application MVC

Quelle est la meilleure pratique pour résoudre ce problème?

+0

N'utilisez pas BasePageClass. Utilisez les pages maîtres. –

+0

Pour clarifier, il y a une page maître utilisée aussi, mais la logique commune pour certaines pages est également dans BasePageClass. –

Répondre

2

S'il y a une fonctionnalité commune, je suppose que cette fonctionnalité devrait être séparée de la page/du contrôleur de toute façon. C'est mieux OOP/D. Ensuite, la page de base de votre contrôleur et votre base System.Web.UI.Page peuvent toutes les deux avoir des propriétés retournant des classes qui contiennent cette fonctionnalité commune .

(J'ai vu beaucoup de cas où des éléments sont entassés dans la page de base qui devrait être ailleurs.) Votre besoin de cette fonctionnalité à la fois dans les pages et les contrôleurs ne fait que mettre en lumière ce mauvais design. . que d'être un problème en soi)

moins susceptibles d'être ce que vous voulez, mais encore une possibilité:

  • vous pouvez également mettre votre fonctionnalité commune dans une série de méthodes d'extension surchargées, où le premier paramètre est (a) System.Web.UI.Page et sur l'autre surcharge (b) System.Web.Mvc.Controller. Votre page de base et votre contrôleur de base peuvent tous deux implémenter une interface commune, la fonctionnalité d'emballage étant stockée dans un emplacement commun.
  • Tirez cette fonctionnalité complètement et faites-le au besoin dans votre logique de contrôle et derrière votre code.
+0

Patrick, je me demande où vous avez vu tous ces trucs entassés dans la page de base ... –

Questions connexes