希望是一个简单的,我创建了一个自定义转发器控件,扩展了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'。
这无论如何都不是一个重大问题,因为当编译自定义中继器工作并且模板按照需要运行时,更难以解决这个问题。
感谢您的帮助!
史蒂夫
答案 0 :(得分:2)
XHTML要求元素名称以小写字母开头。 HTML不区分大小写,而XHTML则是。
来源:http://www.w3.org/TR/xhtml1/#h-4.2
为了使属性可见,您需要将PersistenceMode属性添加到ITemplate属性中,如下所示:
[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate NewTemplate
{
get;
set;
}