2011-06-18 3 views

Répondre

5

Page.Master expose la page maître sous-jacente, le cas échéant.

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

Il n'y a pas [ 'directive MasterType'] (http://msdn.microsoft.com/en-us/library/ms228274.aspx) pour un contrôle utilisateur, je suppose? –

+1

Le type ou l'espace de noms SiterMaster est introuvable – Johan

+4

@Johan, oui, il s'agit du type réel de votre page maître. Par exemple si vous avez un Site.Master alors utilisez SiteMaster, si vous avez FooBar.Matser puis utilisez FooBarMaster, ... –

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

Dans le cas de votre page maître est fixe que vous pouvez trouver le contrôle et la propriété comme ceci:

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

// sur MasterPageName.cs

public TextBox MyProperty 
{ 
    get { return txtmaster; } 
} 

// sur MasterPageName.Master

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

+0

-1: il ne dit rien sur l'accès à un contrôle –

0

Si le MasterPage est comme ça,

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"; 
     } 
    } 
} 

Ensuite, le contrôle de l'utilisateur, vous pouvez accéder à "MonNom" de cette façon,

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

Autant que je compris:

  1. il y a une Page maître (MasterPage.master)
  2. une page Web (Default.aspx) qui utilise MasterPage.
  3. la page Web dispose d'un contrôle utilisateur.
  4. Désormais, vous souhaitez accéder à une propriété d'une page MasterPage à partir de ce contrôle utilisateur.

Disons que dans le MasterPage il y a une propriété appelée nom comme

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

Vous voulez accéder à cette propriété du UserControl. Pour cette raison, vous devez d'abord enregistrer la page maître dans le contrôle utilisateur comme ceci.

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

vous allez maintenant d'abord obtenir la référence de la page ce contrôle utilisateur réside et puis obtenir le Maître page de cette page. Le code sera comme ça.

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

lbl1.Text= mp1.Name; 
+1

ce qui est Masterpage1 – shomaail

+0

La page principale qui doit être visible sur le contrôle utilisateur –

+0

enregistrer ne changent rien dans mon cas, le MasterPage est toujours pas défini dans mon UserControl code-behind – DestyNova

Questions connexes