从用户控件访问母版页属性
本文关键字:母版页 属性 访问 控件 用户 | 更新日期: 2023-09-27 17:59:45
如何从用户控件中的codeehind访问母版页上定义的属性?
var master = (this.Page.Master as SiteMaster);
if (master != null)
{
var myProperty = master.MyProperty;
}
Page.Master公开底层母版页(如果有的话)。
正如我所理解的:
- 有一个母版页(MasterPage.Master)
- 使用MasterPage的网页(Default.aspx)
- 网页具有用户控件
- 现在您想要从此用户控件访问MasterPage的属性
假设在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;
this.NamingContainer.Page.Master.Property;
如果MasterPage是这样的,
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";
}
}
}
然后从用户控制,你可以通过这种方式访问"MyName",
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"
如果您的母版页是固定的,您可以找到这样的控件和属性:
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>