【发布时间】:2011-12-01 07:36:20
【问题描述】:
我创建了一个具有单个 ContentTemplate 的自定义控件,我在其中使用 [TemplateInstance(TemplateInstance.Single)] 属性修饰了 ITemplate 属性,以使内部的所有控件直接可用,而无需使用 FindControl 来访问它们。
但是,如果我根据以下内容在 Formviews InsertItemTemplate 和 EditItemTemplate 中使用我的控件...
<asp:FormView runat="server" ID="formView">
<InsertItemTemplate>
<my:Control runat="server" ID="myControl">
<ContentTemplate>
<asp:TextBox runat="server" ID="textBox" />
</ContentTemplate>
</my:Control>
</InsertItemTemplate>
<EditItemTemplate>
<my:Control runat="server" ID="myControl">
<ContentTemplate>
<asp:TextBox runat="server" ID="textBox" />
</ContentTemplate>
</my:Control>
</EditItemTemplate>
</asp:FormView>
...我收到一条错误消息,因为我的 ContentTemplate 中的两个文本框(或任何其他控件)具有相同的 ID:
“XXX 类已经包含了 textBox 的定义”
我觉得这很奇怪,因为 FormView 的 InsertItemTemplate 和 EditItemTemplate 没有用提到的属性装饰,所以里面的所有控件都应该在它们的模板范围内。上面示例中的 ID“myControl”也是如此,不会产生冲突...
有人知道如何解决这个问题吗?现在我可以在模板中使用不同的 ID:s,但我希望它按原样工作,因为这些 FormView 模板中的控件具有相同的 ID:s 很常见。
【问题讨论】:
-
我的同事发现这个错误报告是相同的问题,只是模板控件是一个更新面板:connect.microsoft.com/VisualStudio/feedback/details/373771/…
标签: asp.net custom-controls webforms controltemplate