Auf Eigenschaften / Methoden der MasterPage zugreifen - MasterType Direktive
Vielfach kam die Frage in den Foren und Newsgroups auf, wie von einer Contentpage aus auf benutzerdefinierte Eigenschaften oder Methoden der MasterPage zugegriffen werden kann.
Nun, die "schnelle" Lösung besteht darin, den Typ des Masterpage Objektes (Typ: MasterPage) in den vererbten Typ der spezifischen MasterPage zu casten.
bspw. mit:
C#
(this.Master as MyMasterPage).Eigenschaft = "Wert";
((MyMasterPage)this.Master).Eigenschaft = "Wert";
VB.NET
DirectCast(Me.Master, MyMasterPage).Methode()
Nun gibt es aber noch eine komfortablere Möglichkeit als dieses Ewige Casting :-)
Über eine "Register MasterType" Direktive kann mithilfe der Attribute "TypeName" oder "VirtualPath" festgelegt werden
welcher Typ die Masterpage ist oder welcher Pfad zur Masterpage führt.
Hinweis:
Wenn TypeName als Angabe benutzt wird, muss der vollqualifizierte Name, also mit Namespace angegeben werden, ansonsten wird der Typ nicht gefunden
<%@ MasterType TypeName="MeinNameSpace.MyMasterPage" %>
// oder
<%@ MasterType VirtualPath="~/MyMasterPage.Master" %>
Wenn diese Direktive gesetzt ist, steht der Masterpage Typ im Code ohne Casting zur Verfügung und zur Ausführung generiert ASP.NET Code der das Casting erledigt.