Masterpage methoden aanroepen vanuit je childpagina
Vandaag was ik weer eens bezig met het ontwikkelen van een website. Nu wilde ik op deze website graag per pagina de omschrijving en keywords opgeven. Een van de redenen hiervoor is omdat de zoekmachines dit leuker vinden en je zo ook per pagina aan kunt geven wat er op te lezen valt. Om nou niet op iedere pagina dezelfde functie te hoeven implementeren en ik liever niet een BasePage wil gebruiken, aangezien ik al met een Masterpage werk, zocht ik een alternatief.
Het mooiste zou zijn om in de masterpage een functie te maken en die vanuit alle child pagina’s aan te kunnen roepen. Na even zoeken hoe ik dit kon bewerkstelligen heb ik het antwoord gevonden.
Als eerste moet je een methode in je masterpage declareren, ik heb deze public
gemaakt, maar ik denk dat protected
of internal
ook wel zal werken. Zodra dit is gedaan kun de functie vanuit een child pagina aanroepen door de masterpage te casten naar de master-klasse.
Dit kan als volgt:
Presentation.Master.JanV ma = this.Master as Presentation.Master.JanV;
Nu kun je met de ma
variabele alle methoden en attributen aanroepen die in de masterpage zijn gedefinieerd, bijvoorbeeld als volgt:
ma.SetMetaTags("Description", paginaItem.Omschrijving);
Ter verduidelijking, de methode SetMetaTags
heb ik zelf gemaakt in de masterpage.
Op deze manier kun je redelijk eenvoudig basis methoden maken zonder gebruik te maken van een tussenpagina waarvan je moet overerven. In mijn geval worden nu extra meta-tags geplaatst, maar je kunt dus ook andere CSS-bestanden plaatsen of een methode in je masterpage plaatsen die (bijna) iedere childpagina gebruikt.