2013-01-08 17 views
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魔术只会自动将用户控件分配给类后面的代码的直接实例,只要它具有相同的名称(如此article所示)?

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

+1

但是,为什么*不*你给控件的ID“singleRaterControl”,然后一切都应该工作。 – aquinas

+1

这将是合乎逻辑的事情,不是这样。所以我做了,而且确实如此。 – Reuben

回答

0

如@aquinas所示,为控件提供一个ID,控件将被分配给与控件的ID同名的受保护属性。