Je suis à la recherche d'un moyen de charger dynamiquement une page maître afin d'obtenir une collection de ContentPlaceHolders à l'intérieur.Trouver ContentPlaceHolders dans la page principale
Je préférerais ne pas avoir à charger un objet page pour assigner la page maître avant que je puisse accéder à ses contrôles, mais si c'est la seule façon dont je serai heureux de l'utiliser. C'est la façon dont j'espérais qu'il travaillerait:
Page page = new Page();
page.MasterPageFile = "~/home.master";
foreach (Control control in page.Master.Controls)
{
if (control.GetType() == typeof(ContentPlaceHolder))
{
// add placeholder id to collection
}
}
Mais page.Master
Déclenche une exception référence nulle. Il semble seulement charger à un moment où une page réelle a été créée dans le cycle de vie de la page.
J'ai même pensé à changer dynamiquement le MasterPageFile de la page en cours sur Page_Init(), en lisant tous les ContentPlaceHolders puis en assignant le MasterPageFile original, mais ce serait horrible!
Y at-il un moyen de charger une page maître en mémoire indépendamment d'une page réelle afin que je puisse accéder aux propriétés de celle-ci? Mon dernier recours impliquera probablement l'analyse du contenu de la page maître pour ContentPlaceHolders, ce qui n'est pas aussi élégant mais pourrait être un peu plus rapide.
Toute personne pouvant vous aider s'il vous plaît? Merci beaucoup.
Excellent, c'est exactement ce que je voulais faire et d'une façon beaucoup plus élégante. Merci! –
@GarryM, j'ai eu du temps et j'ai nettoyé un peu le code. –