如何从用户控件中的代码访问我的母版页上定义的属性?
答案 0 :(得分:16)
var master = (this.Page.Master as SiteMaster);
if (master != null)
{
var myProperty = master.MyProperty;
}
答案 1 :(得分:5)
Page.Master公开底层母版页(如果有的话)。
答案 2 :(得分:2)
尽我所知:
让我们在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>