Wie auf einer Master-Seite aus einem user-control?
Ich bin auf der Suche nach einem Weg, um (vorzugsweise) stark geben Sie eine master-Seite aus eine Benutzer-Steuerung, die fand in einer content-Seite mit der master-Seite.
Leider können Sie nicht verwenden Sie diese in einem user-control:
<%@ MasterType VirtualPath="~/Masters/Whatever.master" %>
Ich versuche, auf eine Eigenschaft der master-Seite aus dem Benutzer die Kontrolle und würde eher nicht zu Durchlaufen haben, die Eigenschaft von der master-Seite können Sie die content-Seite für die Benutzer Steuern, da mehrere content-Seiten mit dem gleichen user-Kontrolle. Eine Veränderung, ein Ort so weiter.
- Was über das hinzufügen einer Eigenschaft der Benutzer-Steuerelement mit dem Namen "Master" und dann übergeben Sie eine Referenz, wenn die Steuerung erklärt wird?
- Ich versuche zu vermeiden, dass zu passieren, alle Referenzen durch die Kontrolle, aber guter Vorschlag.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
Page.Master
.Müssen Sie sicherstellen, dass Sie hinzufügen, die richtige
using
- Anweisungen am Anfang der Datei, oder Kennzeichnen Sie die Master-Seite-Typ inline.Eine potenzielle gotcha ist, wenn dieses Steuerelement verwendet wird, von einer anderen Seite, dessen master-Seite ist NICHT der gleiche Typ. Dies würde nur erwischen während der Laufzeit.
Haben Sie tryed Seite.FindControl("name") auf dem usercontrol?
Der beste Weg, es zu tun, dass ich festgestellt habe, ist, tatsächlich zum erstellen einer benutzerdefinierten Klasse basiert off von UserControl, geben Sie ein Master-Eigenschaft mit einem get-accessor, der die Fische durch die diese.Seite.Eltern, bis es anhält Begegnung mit master-Seiten (Wenn Sie nisten, ist dieser Schritt unnötig ist anders) und dann wieder, dass die web-Steuerung, wie die Art der master-Seite die Sie verwenden möchten. Dann, wenn Sie einen neuen Benutzer hinzufügen, Steuerelement, ändern Sie die Basis-Klasse auf den Namen der benutzerdefinierten Klasse. Die .Master-Eigenschaft zugegriffen werden und der cast richtig, wie die master-Seite, die Sie wollen, es zu benutzen.
In VB alle ich tun musste, war dies ändern:
zu diesem:
Also alle Referenzen von Master werden Ctype(Me.Seite.Master, typeofMaster)
Wo ist in diesem Fall das Wort "Haupt" - bekommen, dass aus der Erklärung oben in der master-Seite. z.B.
Also "main" in diesem Fall 🙂