2011-06-18 17 views

Respuesta

5

Page.Master expone la página maestra subyacente, en su caso.

14
var master = (this.Page.Master as SiteMaster); 
if (master != null) 
{ 
    var myProperty = master.MyProperty; 
} 
+0

No hay [ 'Directiva MasterType'] (http://msdn.microsoft.com/en-us/library/ms228274.aspx) para un control de usuario, supongo? –

+1

No se pudo encontrar el tipo o espacio de nombre SiterMaster – Johan

+4

@Johan, sí, este es el tipo real de su página maestra. Por ejemplo, si tiene un Site.Master, utilice SiteMaster, si tiene FooBar.Matser y luego usa FooBarMaster, ... –

1
this.NamingContainer.Page.Master.Property; 
-1

En caso de que su página maestra se fija que puede encontrar el control y la propiedad como esta:

MasterPageName mp =(MasterPageName) Page.Master; 
    //find a control 
    Response.Write((mp.FindControl("txtmaster") as TextBox).Text); 
    //find a property 
    Response.Write(mp.MyProperty.Text); 

// en MasterPageName.cs

public TextBox MyProperty 
{ 
    get { return txtmaster; } 
} 

// en MasterPageName.Master

<asp:TextBox runat="server" ID="txtmaster"></asp:TextBox>

+0

-1: no dijo nada sobre el acceso a un control –

0

Si el MasterPage es así,

public partial class MasterPage : System.Web.UI.MasterPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     // 
    } 

    // the property which I would like to access from user control 
    public String MyName 
    { 
     get 
     { 
      return "Nazmul"; 
     } 
    } 
} 

Luego, desde el control de usuario, puede acceder a "MyName", de esta manera,

MasterPage m = Page.Master as MasterPage; 
Type t = m.GetType(); 

System.Reflection.PropertyInfo pi = t.GetProperty("MyName"); 

Response.Write(pi.GetValue(m,null)); //return "Nazmul" 
2

Por mucho que he entendido:

  1. hay una página maestra (MasterPage.master)
  2. una página web (Default.aspx) que está usando MasterPage.
  3. la página web tiene un control de usuario.
  4. Ahora quiere acceder a una propiedad de una página maestra desde este control de usuario.

permite decir en el MasterPage hay una propiedad llamada nombre como

public string Name{ get{return "ABC";} } 

Ahora desea acceder a esta propiedad desde el control de usuario.

Para ello, primero tendrá que registrar la página maestra en el control de usuario de esta manera.

<%@ Register TagPrefix="mp" TagName="MyMP" Src="~/MasterPage.master" %> 

Ahora usted primero tendrá que obtener la referencia de la página de este control de usuario está residiendo en y luego la página maestra de esa página. El código será así.

System.Web.UI.Page page = (System.Web.UI.Page)this.Page; 
MasterPage1 mp1 = (MasterPage1)page.Master; 

lbl1.Text= mp1.Name; 
+1

lo que es Masterpage1 – shomaail

+0

La página maestra que debe ser visible en los controles de usuario –

+0

Registrar no cambiar nada en mi caso, la página maestra aún no está definida en mi código de control de usuario – DestyNova

Cuestiones relacionadas