/ / Une page maître peut-elle référencer une autre page maître avec le même contenu et les mêmes balises contentplaceholder? - asp.net, master-pages, asp.net-2.0

Une page maître peut-elle référencer une autre page maître avec le même contenu et les mêmes balises contentplaceholder? - asp.net, master-pages, asp.net-2.0

J'ai actuellement trois pages maîtres et pages de contenu dans la hiérarchie suivante:

  • Une page principale au niveau racine qui affiche le résultat final. Appelle ça "A"
  • Deux pages sœurs qui ne se référencent pas mais contiennent tous les mêmes éléments contentplaceholder, mais dans un ordre différent avec des <div>"s les entourant. Les deux font référence à la page principale de niveau racine. Appelez-les" B1 "et" B2 ".
  • Plusieurs pages de contenu qui font référence à l’une ou l’autre des pages maîtres jumelles ci-dessus (pas les deux). Appelez ces "C1" à "C-peu importe".

En gros j'ai:

Cn => B1 => A

Cm => B2 => A

Cette hiérarchie fonctionne bien.

Configuration souhaitée

Ce que je veux faire, c'est ajouter un nouveau niveau à cette hiérarchie (une nouvelle page maître) entre les pages de contenu et les pages maîtres frères. En gros, c’est comme ça:

  • Une page principale au niveau racine qui affiche le résultat final.
  • Deux pages sœurs plus un troisième frère. Appelez ça B3
  • Une nouvelle page centrale qui "choisit" dynamiquement l'un des frères et sœursmasterpages. Le comportement souhaité est de transmettre le contenu donné par C directement à Bn sans le modifier. La seule chose que D fait activement est de choisir quel Bn. Appelez cette nouvelle page principale D.
  • Plusieurs pages de contenu faisant référence au nouveau gabarit central au lieu des anciens frères et soeurs.

Le défi, c’est que je travaille dans les limites d’un produit assez complexe et Je ne peux pas changer les masterpages originaux des deux frères (B1 et B2) ou pages de contenu (C) de manière significative.

Je veux:

Cn => D => B1 => A

Cm => D => B2 => A

Ck => D => B3 => A

Essentiellement, D devrait "passer par" tout le contenu de "son contenu vers la page principale de niveau B qu'il choisit. Je ne peux pas" mettre cette logique dans les pages de niveau C.

Détails supplémentaires

  • Toutes les pages de niveau B ont les mêmes balises content / contentplaceholder, elles viennent d'être commandées et mises en forme différemment.
  • D peut être aussi compliqué qu’il doit l’être, tant qu’il n’est pas nécessaire de modifier C ou B.
  • J'utilise ASP.Net 2.0

Est-ce possible?

Réponses:

0 pour la réponse № 1

Une page principale n'a pas d 'événement Page_PreInit. Par conséquent, toutes les modifications apportées à la hiérarchie de la page principale (imbriquées ou non) doivent provenir de la page de contenu.

Donc, si vous pouvez modifier les pages de contenu, ajoutez:

void Page_PreInit(object sender, EventArgs e)
{
//if (someCondition)
this.Master.MasterPageFile = "~/Path/B1.master";
//else if (otherCondition)
this.Master.MasterPageFile = "~/Path/B2.master";
//etc.
}