2008-12-19 6 views

Antwort

13

Sie können zwei Methoden verwenden. Die erste ist mit Page.Master.FindControl('controlID'). Dann können Sie es in den Typ Ihres Benutzersteuerelements umwandeln. Die zweite Methode besteht darin, ein <%@ MasterType VirtualPath=""> ODER <%@ MasterType TypeName=""%> Tag zu Ihrer Aspx-Seite hinzuzufügen. Fügen Sie in der VirtualPath den virtuellen Pfad zur Masterseite hinzu, oder die Klasse in TypeName. Sie können dann mit intellisense auf alles zugreifen.

+1

Die MasterType-Direktive sollte entweder VirtualPath oder TypeName verwenden, aber nicht beides. – Mike

+0

@Mike ist korrekt und ich habe die Antwort bearbeitet, um seinen Kommentar zu reflektieren. – BornToCode

4

Es gibt noch eine andere Methode, und zwar durch Erstellen einer öffentlichen Eigenschaft auf der Masterseite, die das Benutzersteuerelement verfügbar macht.

1

Verwenden einer öffentlichen Eigenschaft würde funktionieren. In der Formload-Methode der Content-Seite, könnten Sie so etwas wie diese (VB) tun:

Dim myMaster as MyMasterPage = CType(Page.Master, MyMasterPage) 
myMaster.MyUserControl.Text = "Hello!" 
+0

Die Verwendung von Code-Behind-Dateien ist keine bewährte Methode. Hier sind Versuche, sie überhaupt loszuwerden http://haacked.com/archive/2008/12/19/a-little-holiday-love-from-the-asp.net-mvc-team.aspx –

+4

Wie ist es nicht eine beste Praxis? Sie verwechseln ASP.NET-Webformulare, um die es in dieser Frage geht, und ASP.NET MVC. Diese Antwort ist perfekt geeignet. – jwalkerjr

5

zunächst die Benutzersteuerung in der Masterpage als below.Then finden Sie das Steuerelement, das Sie ihr Eigentum zugreifen müssen.

UserControl uch = Page.Master.FindControl("ucHeader1") as UserControl; 
PlaceHolder phProxylist= ucHeader1.FindControl("phProxy") as PlaceHolder; 
DropDownList ddlproxylist1 = ucHeader1.FindControl("ddlProxyList") as DropDownList; 
phProxylist.Visible = false; 

Hoffe, das hilft.

Verwandte Themen