Peter Bucher - Mein Experiment, meine Spielereien, meine Welt...   ·   Stefan Falz   ·   Jürgen Gutsch   ·   Golo Roden   ·   ASP.NET Zone   ·   Microsoft ASP.NET
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe

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.

Veröffentlicht Sonntag, 28. Oktober 2007 16:31 von Peter Bucher
Abgelegt unter: , , ,

Kommentare

# re: Auf Eigenschaften / Methoden der MasterPage zugreifen - MasterType Direktive

Hallo

Etwas kleines, komme leider nicht weiter: Kann ich mit --

<%@ MasterType VirtualPath="~/MyMasterPage.Master" %>

-- auch auf ein Multiview der Masterpage zugreiffen?

Wenn ja, wie geht das bitte in VISUAL BASIC?

Gruss Beat

beatgschwend@hotmail.com

Samstag, 31. Mai 2008 18:52 by biit

# re: Auf Eigenschaften / Methoden der MasterPage zugreifen - MasterType Direktive

Hallo Beat

Ja klar, das kannst du auch ohne MasterType Dekleration erreichen.

Benutze einfach <Page.Master.FindControl(<ID)> und einen Cast (Im Beispiel oben bspw. ein DirectCast), um den richtigen Typ zu erhalten.

Gruss Peter

Samstag, 7. Juni 2008 12:39 by Peter Bucher
Anonyme Kommentare sind nicht zugelassen