1

我有一系列几乎相同的 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 魔术只会自动将用户控件分配给类后面代码的直接实例,只要它具有相同的名称(如本文所建议的那样)?

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

4

1 回答 1

0

正如@aquinas 所建议的,给控件一个 ID,控件将被分配给与控件 ID 同名的受保护属性。

于 2013-01-09T02:41:49.347 回答