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所示)?
如果是這樣,是否可以手動查找並分配用戶控件?
但是,爲什麼*不*你給控件的ID「singleRaterControl」,然後一切都應該工作。 – aquinas
這將是合乎邏輯的事情,不是這樣。所以我做了,而且確實如此。 – Reuben