这有效:
Public Class HelloWorld
Inherits CompositeControl
Implements INamingContainer
<PersistenceMode(PersistenceMode.InnerProperty)>
Public Property TemplateA() As ITemplate
<PersistenceMode(PersistenceMode.InnerProperty)>
Public Property TemplateB() As ITemplate
End Class
和:
<me:HelloWorld>
<TemplateA>
<me:SomeControl>
<asp:Textbox Id="Bob" />
</me:SomeControl>
</TemplateA>
<TemplateB>
<me:SomeControl>
<asp:Textbox Id="Bob" />
</me:SomeControl>
</TemplateB>
</me:HelloWorld>
但我宁愿做的是在一个类中实现 ITemplate,这样我也可以使用自定义属性和其他东西:
Public Class TemplateA
Inherits TemplateBase
Implements INamingContainer, ITemplate
... Properties
Public Sub InstantiateIn(container As Control) Implements ITemplate.InstantiateIn
container.Controls.Add(Me)
End Sub
End Class
但随后我收到文本框的重复 ID 错误。有人可以给我看一个例子吗?我已经阅读了无数模板化控制教程并找到了这样做的人的例子,但显然它并没有以相同的方式实现 Itemplate。C# 或 VB.net 中的示例很好。