ASP.NET:获取父ASCX控件的强类型引用

时间:2018-01-11 21:12:51

标签: c# asp.net

我有一个用户控件(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";
}

但是,当我收到运行时错误时,这不起作用:不允许循环文件引用。

关于如何从孩子那里获得对父母的强类型引用的任何其他想法?

1 个答案:

答案 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