2008-12-19 14 views

Odpowiedz

13

Można użyć dwóch metod. Pierwszym z nich jest użycie Page.Master.FindControl('controlID'). Następnie możesz rzucić go do typu kontroli użytkownika. Druga metoda polega na dodaniu znacznika <%@ MasterType VirtualPath=""> OR <%@ MasterType TypeName=""%> do strony aspx. W polu VirtualPath dodaj ścieżkę wirtualną do strony wzorcowej lub klasę w klasie TypeName. Możesz wtedy uzyskać dostęp do wszystkiego za pomocą technologii intelliSense.

+1

Dyrektywa MasterType powinna używać ścieżki wirtualnej lub nazwy typu, ale nie może ich używać. – Mike

+0

@Mike jest poprawny i zredagowałem odpowiedź, aby odzwierciedlić jego komentarz. – BornToCode

4

Jest jeszcze jedna metoda, a to przez utworzenie publicznej właściwości na stronie wzorcowej, która ujawnia kontrolę użytkownika.

1

Korzystanie z nieruchomości publicznej będzie działać. W metodzie FormLoad strony zawartość jest, można zrobić coś takiego (VB):

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

Używanie plików z kodowaniem nie jest najlepszą praktyką. Oto próby ich pozbycia się http://haacked.com/archive/2008/12/19/a-little-holiday-love-from-the-asp.net-mvc-team.aspx –

+4

W jaki sposób to nie najlepsza praktyka? Mylicie internetowe formularze ASP.NET, o które to pytanie chodzi i ASP.NET MVC. Ta odpowiedź jest całkowicie odpowiednia. – jwalkerjr

5

najpierw znaleźć kontrolę użytkownika w masterpage jako below.Then znaleźć kontroli potrzebne do uzyskania dostępu do ich własności.

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; 

Mam nadzieję, że to pomoże.

Powiązane problemy