Я создал пользовательский элемент управления, который имеет один ContentTemplate, где я украсил свойство ITemplate атрибутом [TemplateInstance (TemplateInstance.Single)], чтобы сделать все элементы управления внутри непосредственно доступными без использования 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 имеют одинаковый идентификатор:
«Класс XXX уже содержит определение для textBox»
Я нахожу это очень странным, поскольку InsertItemTemplate и EditItemTemplate FormView НЕ украшены упомянутым атрибутом, поэтому все элементы управления внутри должны быть ограничены своим шаблоном. Это также верно для идентификатора «myControl» в приведенном выше примере, который не приводит к конфликту ...
У кого-нибудь есть идеи, как решить эту проблему? На данный момент я могу использовать разные идентификаторы в шаблонах, но мне бы хотелось, чтобы они работали как есть, поскольку это настолько распространено, что элементы управления внутри этих шаблонов FormView имеют одинаковые идентификаторы: s.