2010-08-17 11 views
0

Je travaille avec une application tierce asp.net qui utilise des pages maîtres et des pages maîtres imbriquées. Mes besoins sont de définir dynamiquement les fichiers de la page maître pour chaque page (.aspx). L'application par défaut définit le fichier de la page maître dans la directive @Page fortement typée pour chaque page. Je ne veux pas changer la directive fortement typée sur chaque page (plus de 50 pages) parce que je suis fainéant et que je veux minimiser les conflits avec les futures mises à jour.Dérogation fortement typée @page masterpagefile

Ma solution était d'utiliser la classe de base masterpage et passer outre l'événement OnPreInt comme ceci:

protected override void OnPreInit(EventArgs e) 
    { 
    this.MasterPageFile = "~/MasterPages/MyMaster.master"; 
    } 

Tout fonctionne parfaitement. Ma question est la suivante: est-ce une mauvaise idée et pourquoi? Cela semble trop facile d'être vrai.

merci.

Répondre

0

C'est une très bonne idée. La moitié du point des pages maîtres est que vous pouvez le faire. Une chose gênante à leur sujet, c'est que vous ne pouvez pas les faire commencer à référencer un fichier inexistant (ce qui le rendrait plus clair quand vous déciderez toujours du programme principal), donc si je suis Je vais toujours commencer par une page qui dit juste "Dummy master page, cela sera déplacé de la programmation", donc il est clair que cela arrive à tous ceux qui recherchent la page master utilisée par la page .

+0

Merci Jon. En fait, j'ai déjà vu cela avant et je n'ai jamais cherché à savoir pourquoi ni ce que c'était. C'est une bonne idée qui semblerait atténuer une partie de la confusion future évoquée par Koistya. Ma paranoïa diminue. – trevorc

0

Cela rend le code/la logique plus compliqué. D'autres personnes qui pourraient continuer à travailler sur le projet après vous, par exemple, peuvent avoir des problèmes pour le comprendre rapidement. IMHO

+0

Cela a du sens. Idéalement, je voudrais supprimer la partie fortement typée, mais je ne contrôle pas cela. C'est principalement pour faciliter le thème. – trevorc

+0

Joe, je ne vois aucun problème avec votre approche autre que la facilité de lecture. Vous pouvez également essayer d'explorer les thèmes ASP.NET natifs, mais il est possible que votre approche soit plus simple. –

+0

Sans aller trop loin du sujet, je trouve qu'il est difficile d'adapter un thème et une mise en page personnalisés au balisage de quelqu'un d'autre (masterpage). Je voulais la liberté de concevoir une mise en page/un thème en utilisant mes propres classes/id/etc et de le changer en cas de besoin. Merci pour l'entrée Koistya. – trevorc

0

Cela devrait fonctionner sans problème. Le MasterPage n'est pas appliqué à la collection de contrôle qu'après OnPreInit. Les seuls problèmes possibles que je vois avec cela, est que

1) Votre devs devra se rappeler ce commutateur se produit (dette technique)

2) Vous devrez charger les deux classes de masterpage à chaque fois que la page est demandé (problème de performance)

Questions connexes