2010-10-25 11 views
6

Ich bin auf eine Methode auf meiner Masterseite zugreifen. Ich habe eine Fehlermeldung, die ich aufgrund von Fehlermeldungen, die ich von meiner Website erhalte, aktualisieren möchte.Zugriff Master-Seite öffentliche Methode von Benutzersteuerung/Klasse/Seite

public string ErrorText 
{ 
    get { return this.infoLabel.Text; } 
    set { this.infoLabel.Text = value; } 
} 

Wie kann ich über meine Benutzersteuerung oder Klassen, die ich eingerichtet habe, darauf zugreifen?

Antwort

1

Seite sollte nächsten Markup enthalten:

<%@ MasterType VirtualPath="~/Site.master" %> 

dann Page.Master hat keine Art von MasterPage aber Ihre Master-Seite-Typ, das heißt:

public partial class MySiteMaster : MasterPage 
{ 
    public string ErrorText { get; set; } 
} 

Seite Code-Behind:

this.Master.ErrorText = ...; 

Ein anderer Weg:

public interface IMyMasterPage 
{ 
    string ErrorText { get; set; } 
} 

(legte es auf App_Code oder besser - in Klassenbibliothek)

public partial class MySiteMaster : MasterPage, IMyMasterPage { } 

Verbrauch:

((IMyMasterPage)this.Page.Master).ErrorText = ...; 
+0

Hey da abatischev, ich habe genau das gleiche Problem wie OP. Ich bin dabei, die Interface-Route zu versuchen, die schnell aussieht :) Nur neugierig, ist MasterType, im ersten Beispiel in einem Benutzersteuerelement gültig? Ich weiß, dass dies mit untergeordneten Seiten gut funktioniert, und frage mich, ob es eine Möglichkeit gibt, dies mit den Benutzersteuerelementen zu implementieren, bevor Option 2 implementiert wird. Danke! – clamchoda

+0

@Chris: Hallo! Soweit ich weiß - leider nein, funktioniert es nicht für UserControls. UC kennt nichts von der Masterseite der Elternseite, hat nur einen Verweis auf sie: this.Page, this.Page.Master, also ist die Option # 2 die einzige, die ich kenne – abatishchev

5

Um die Masterpage zugreifen:

this.Page.Master 

dann müssen Sie vielleicht auf die tatsächliche Art der Masterseite werfen, so dass Sie die ErrorText Eigenschaft bekommen könnte oder Masterseite machen eine Schnittstelle implementieren diese Eigenschaft enthält.

+0

Wie kann ich this.Page.Master aus einer Klasse verwenden . Es scheint nicht für mich zu funktionieren. – Churchill

+0

http://stackoverflow.com/questions/416691/how-to-reference-a-master-page-from-a-user-control – DeveloperDan

Verwandte Themen