2009-04-16 63 views
1

希望這是一個簡單的方法,我創建了一個擴展System.Web.UI.WebControls.Repeater的自定義Repeater控件。我已經爲此控件添加了兩個ITemplate屬性,並在需要時以所需的方式添加這些屬性。一切工作都很好,但我在Visual Studio中遇到了一個問題,它們會識別這些新模板。自定義Web控件,ITemplate不被識別

當我加中繼器頁面,例如:

<my:Repeater ID="rpt" runat="server" NewProperty="This works!"> 
    <NewTemplate>The contents go here...</NewTemplate> 
</my:repeater> 

一切工作(!宇),當我添加屬性「NewProperty」,我加一個屬性,可以在智能感知可見在Visual Studio中如預期的那樣(嗚!)。令人討厭的是,雖然新的ITemplate不能通過Intellisense獲得,但是我必須從我的知識中回憶起它們(boo!)。新的模板也有'問題',下面的消息強調:

Validation(XHTML 1.0 Transitional):元素'newtemplate'不受支持。

這是不以任何方式編譯時自定義轉發工程和模板的行爲,因爲他們需要,這是更大的煩惱,將是巨大理清的一個主要問題。

感謝您的幫助!

Steve

回答

2

XHTML要求元素名稱以小寫字母開頭。 HTML不區分大小寫,而XHTML是。

來源:http://www.w3.org/TR/xhtml1/#h-4.2

爲了使財產是可見的,你需要的PersistenceMode屬性添加到您的ITemplate屬性如下:

[PersistenceMode(PersistenceMode.InnerProperty)] 
public ITemplate NewTemplate 
{ 
    get; 
    set; 
} 
+0

嗨何塞,我不知道你」我已經瞭解了這個問題,因爲ItemTemplate,HeaderTemplate等被大寫。問題在於Visual Studio無法識別模板,因此它假定它們是XHTML元素,但它們不是。 我希望有一種方法可以確保VS知道它們。 – stibstibstib 2009-04-16 13:38:51