2011-06-18 57 views

Trả lời

5

Page.Master hiển thị trang chính bên dưới, nếu có.

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

Không có ['MasterType' chỉ thị] (http://msdn.microsoft.com/en-us/library/ms228274.aspx) để kiểm soát người dùng, tôi đoán vậy? –

+1

Loại hoặc không gian tên SiterMaster không thể tìm thấy – Johan

+4

@Johan, vâng, đây là loại thực tế của trang cái của bạn. Ví dụ nếu bạn có Site.Master sau đó sử dụng SiteMaster, nếu bạn có FooBar.Matser sau đó sử dụng FooBarMaster, ... –

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

Trong trường hợp của Master Page của bạn là cố định hơn Bạn có thể tìm kiểm soát và tài sản như thế này:

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

// trên MasterPageName.cs

public TextBox MyProperty 
{ 
    get { return txtmaster; } 
} 

// trên MasterPageName.Master

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

+0

-1: anh ấy không nói gì về việc truy cập điều khiển –

0

Nếu MasterPage là như thế này,

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

Sau đó, từ sự kiểm soát của người dùng, bạn có thể truy cập vào "Myname" bằng cách này,

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

Càng nhiều càng tốt tôi đã hiểu:

  1. có Trang chính (MasterPage.master)
  2. trang web (Default.aspx) đang sử dụng MasterPage.
  3. trang web có quyền kiểm soát của người dùng.
  4. Bây giờ bạn muốn truy cập thuộc tính của một MasterPage từ điều khiển người dùng này.

phép nói rằng trong MasterPage có một tài sản được gọi tên như

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

Bây giờ bạn muốn truy cập vào thuộc tính này từ UserControl.

Với mục đích này trước tiên bạn sẽ phải đăng ký trang chính trong điều khiển người dùng như thế này.

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

Bây giờ, trước tiên bạn sẽ có được tham chiếu của trang mà điều khiển người dùng này đang cư trú và sau đó lấy Trang chính của trang đó. Mã sẽ như thế này.

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

lbl1.Text= mp1.Name; 
+1

Masterpage1 – shomaail

+0

Trang cái nào cần hiển thị trên điều khiển người dùng –

+0

Đăng ký thay đổi không có gì trong trường hợp của tôi, MasterPage vẫn chưa được xác định trong mã userControl của tôi sau – DestyNova

Các vấn đề liên quan