2011-06-18 10 views

Odpowiedz

5

Page.Master odsłania podstawową stronę wzorcową, jeśli istnieje.

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

Nie ma [ 'dyrektywa MasterType'] (http://msdn.microsoft.com/en-us/library/ms228274.aspx) dla formantu użytkownika, jak sądzę? –

+1

Typ lub przestrzeń nazw SiterMaster nie można znaleźć – Johan

+4

@Johan, tak, to jest rzeczywisty typ strony wzorcowej. Na przykład, jeśli masz Site.Master, użyj SiteMaster, jeśli masz FooBar.Matser, a następnie użyj FooBarMaster, ... –

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

W sprawie swojej strony wzorcowej jest ustalona, ​​niż można znaleźć kontroli i własności takiego:

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

// na MasterPageName.cs

public TextBox MyProperty 
{ 
    get { return txtmaster; } 
} 

// na MasterPageName.Master

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

+0

-1: nic nie powiedział o uzyskaniu dostępu do kontrolki –

0

Jeśli MasterPage jest tak,

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

Następnie z kontrolą użytkownika, można uzyskać dostęp do "MyName" w ten sposób,

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

Aż zrozumiałem:

  1. Istnieje strona wzorcowa (MasterPage.master)
  2. stronę internetową (Default.aspx), która używa MasterPage.
  3. strona ma kontrolę użytkownika.
  4. Teraz chcesz uzyskać dostęp do właściwości strony MasterPage z tego formantu użytkownika.

Powiedzmy w MasterPage istnieje właściwość o nazwie nazwa jak

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

Teraz chcesz mieć dostęp do tej właściwości z UserControl.

W tym celu najpierw musisz zarejestrować stronę wzorcową w kontrolce użytkownika w ten sposób.

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

Teraz trzeba najpierw uzyskać odwołanie strony ta kontrola użytkownik przebywa w, a następnie dostać Master stronie tej strony. Kod będzie taki.

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

lbl1.Text= mp1.Name; 
+1

co to jest Masterpage1 – shomaail

+0

Strona wzorcowa, która musi być widoczna na kontrolkach użytkownika –

+0

Zarejestruj się nic nie zmieniaj w moim przypadku, strona MasterPage nadal nie jest zdefiniowana w moim kodzie userControl-behind – DestyNova

Powiązane problemy