0

这有效:

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 中的示例很好。

4

0 回答 0