2013-01-08 51 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同名的受保護屬性。

相關問題