自定义Web控件,ITemplate无法识别

时间:2009-04-16 13:02:37

标签: .net visual-studio custom-server-controls itemplate

希望是一个简单的,我创建了一个自定义转发器控件,扩展了System.Web.UI.WebControls.Repeater。我已经为此控件添加了两个ITemplate属性,并在需要时以所需方式添加这些属性。一切都工作得很好,但我在Visual Studio中遇到了这些新模板被识别出来的问题。

当我将转发器添加到页面时,例如:

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

一切正常(喔!),当我添加属性'NewProperty'时,我添加的属性可以在Visual Studio的Intellisense中看到,如预期的那样(喔!)。令人讨厌的是,新的ITemplate不能通过Intellisense获得,而且必须从我对它们的知识中回忆起来(嘘!)。新模板还有“问题”下划线,并显示以下消息:

  

验证(XHTML 1.0 Transitional):不支持元素'newtemplate'。

这无论如何都不是一个重大问题,因为当编译自定义中继器工作并且模板按照需要运行时,更难以解决这个问题。

感谢您的帮助!

史蒂夫

1 个答案:

答案 0 :(得分:2)

XHTML要求元素名称以小写字母开头。 HTML不区分大小写,而XHTML则是。

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

为了使属性可见,您需要将PersistenceMode属性添加到ITemplate属性中,如下所示:

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