我有一个用户控件(Dashboard.ascx),其中包含一个子控件(DashboardChild.ascx)。
从子控件中,我想获得父类的强类型引用,以在父级(Dashboard.ascx)上设置几个属性。
我想到的一个想法是在我的DashboardChild.ascx和Page Load中定义一个引用,将父项分配给子项:
Dashboard.ascx
protected void Page_Load(object sender, EventArgs e)
{
DasbhardChild.DashboardParent = this;
}
DashboardChild.ascx
<%@ Register Src="~/Home/Dashboard.ascx" TagPrefix="uc1" TagName="Dashboard" %>
// Code Behind
public Dashboard DashboardParent { get; set; }
protected void btnRun_Click(object sender, EventArgs e)
{
DashboardParent.AdditionalInfo = "ABC";
}
但是,当我收到运行时错误时,这不起作用:不允许循环文件引用。
关于如何从孩子那里获得对父母的强类型引用的任何其他想法?
答案 0 :(得分:1)
最好不要倒退,在树上。请记住,当页面呈现时,页面上呈现的唯一内容是html。
在aspx页面上:
Control DashboardChild = null;
bool c = Dashboard.Controls.Contains(DashboardChild); // returns false.
代码不会在页面上找到控件,只有html ,无论子控件中是什么 - 而不是控件本身。
另见这里的第一个答案(第一段):Nested User Controls - how to best get a reference to an ancestor control