如何将用户控件分配给后面的扩展代码?

时间:2013-01-08 04:29:24

标签: asp.net user-controls

我有一系列几乎相同的ASP.NET页面,除了后面代码中的一些抽象属性。

每个页面(/default.aspx)都包含一个用户控件:

<UI:SingleRaterControl runat="server" />

以前,各种代码背后都是基本相同的复制和粘贴。在每个版本的/default.aspx.cs中都有一个受保护的属性来保存用户控件。

public class _default: SingleRaterBase
{
    protected SingleRaterControl singleRaterControl;
    ...
}

为了减少我必须维护的代码量,我创建了一个名为EProfileDefault的抽象类,它将保存_default类的所有公共代码(每个_default类都位于不同的名称空间中)。

所以现在我有了

public abstract class EProfileDefault: SingleRaterBase
{
    protected SingleRaterControl singleRaterControl;
    ...
}

并且每个_default类都有

public class _default : EProfileDefault
{
    ...
}

但是,SingleRaterControl不再自动分配给后面的代码。

这是因为ASP.NET magic只会自动将用户控件分配给类后面的代码的直接实例,只要它具有相同的名称(如article所示)?

如果是,是否可以手动查找和分配用户控件?

1 个答案:

答案 0 :(得分:0)

根据@aquinas的建议,为控件提供一个ID,控件将被分配给受控属性,其名称与控件的ID相同。