从usercontrol访问maspage属性

时间:2011-06-18 08:48:50

标签: c# asp.net

如何从用户控件中的代码访问我的母版页上定义的属性?

6 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:5)

Page.Master公开底层母版页(如果有的话)。

答案 2 :(得分:2)

尽我所知:

  1. 有一个母版页(MasterPage.master)
  2. 使用MasterPage的网页(Default.aspx)。
  3. 网页具有用户控件。
  4. 现在您要从此用户控件访问MasterPage的属性。
  5. 让我们在MasterPage中说有一个名为

    的名称
    public string Name{ get{return "ABC";} }
    

    现在您想要从UserControl访问此属性。

    为此,您首先必须在用户控件中注册母版页。

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

    现在,您首先必须获取此用户控件所在页面的引用,然后获取该页面的母版页。代码将是这样的。

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

答案 3 :(得分:1)

this.NamingContainer.Page.Master.Property;   

答案 4 :(得分:0)

如果母版页是这样的,

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

然后从用户控件中,您可以通过这种方式访问​​“我的名字”,

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"

答案 5 :(得分:-1)

如果你的母版页是固定的,你可以找到这样的控制和属性:

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

//在MasterPageName.cs上

 public TextBox MyProperty
 {
    get { return txtmaster; }
 }

//在MasterPageName.Master

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