2008-12-19 26 views

Respuesta

13

Puede usar dos métodos. El primero es mediante el uso de Page.Master.FindControl('controlID'). Luego puede convertirlo al tipo de control de usuario. El segundo método es agregar una etiqueta <%@ MasterType VirtualPath=""> O <%@ MasterType TypeName=""%> a su página aspx. En el VirtualPath agregue la ruta virtual a la página maestra, o la clase en el TypeName. A continuación, puede acceder a todo con intellisense.

+1

La directiva MasterType debe usar VirtualPath o OR TypeName, pero no puede usar ambos. – Mike

+0

@Mike es correcto y he editado la respuesta para reflejar su comentario. – BornToCode

4

Hay otro método, y es haciendo una propiedad pública en la página maestra que expone el control del usuario.

1

Usar una propiedad pública funcionaría. En el método FormLoad del contenido de la página, se podría hacer algo como esto (VB):

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

El uso de archivos de código subyacente no es una práctica recomendada. Aquí hay intentos de deshacerse de ellos en absoluto http://haacked.com/archive/2008/12/19/a-little-holiday-love-from-the-asp.net-mvc-team.aspx –

+4

¿Cómo es? no es una mejor practica? Está confundiendo formularios web ASP.NET, de lo que se trata esta pregunta y ASP.NET MVC. Esta respuesta es perfectamente adecuada. – jwalkerjr

5

en primer lugar el control de usuario en el masterpage como below.Then encontrar el control que necesita para acceder a su propiedad.

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; 

Espero que esto ayude.

Cuestiones relacionadas