我正在創建一個基於asp:Label控件的自定義複合控件。我希望能夠將標籤的默認屬性設置爲可剝皮的,以及添加到我的控件中的其他屬性。創建ASP.NET複合控件。如何應用與SkinID相關的屬性?
但是,當我添加一個皮膚定義到我的主題目錄中的Default.skin文件中,並將控件添加到指定的SkinId到我的頁面時,我無法弄清楚如何讓控件使用Skinned屬性進行渲染。
附加點:
- 我的定製控制是在一個單獨的庫/ DLL中定義。
- 我添加了一個測試屬性,並添加了[Themeable(false)]屬性。然後我在.skin文件中設置該屬性。當我試圖查看頁面時,我沒有收到任何錯誤,所以在我看來,.skin文件沒有得到應用,或者皮膚文件中的控件def沒有與控件def匹配aspx頁面。
從皮膚文件:
<ctrl:ExtendedLabel SkinId="test" runat="server"
Expandable="true" Lookup="true" Required="true"
RequiredCssClass="required" Text="Hello" />
從aspx頁面:
<ctrl:ExtendedLabel SkinID="test" runat="server"/>
從web.config中:
<pages>
<controls>
<add tagPrefix="ctrl" namespace="MyCompany.WebControls"
assembly="MyCompany.Web" />
</controls>
</pages>
我添加了一個試驗性質的控制,將其標記爲[Themeable(false)],以便測試在何時出現運行時錯誤在皮膚文件中設置該屬性。沒有錯誤。
請注意,頁面標記沒有styleSheetTheme屬性。然而,我確實有一個覆蓋StyleSheetTheme屬性的Base頁面類,它似乎適用於其他所有內容。
如果我將styleSheetTheme屬性添加到web.config中的頁面標記中,則皮膚內容可以正常工作,包括在嘗試設置非非Themeable屬性時收到錯誤。
有什麼區別?我怎樣才能使它與基頁面類的屬性代碼一起工作?
通過上述所有步驟,我發現我的測試頁不是從基本頁類繼承的。衛生署!多麼尷尬。感謝Chris的核對清單 – slolife 2009-09-28 20:33:59