У меня есть 2 пользовательских элемента управления, я используется как контейнер для другого:
<mc:Container runat="server" ID="container">
<mc:MyControl runat="server" ID="test">
</mc:Container>
Контейнер mc имеет внутреннее свойство по умолчанию, называемое content, которое является коллекцией MyControls
.
Разметка выше находится внутри FormView
, и когда я вызываю FindControl
в форме, он может найти контейнер, но не может найти тест.
Как я могу сделать так, чтобы контейнер не управлялсоздать новый контейнер именования?
РЕДАКТИРОВАТЬ __
Если его нет в FormView
, идентификаторы внутреннего элемента управления отображаются как часть страницы в конструкторе, поэтому он работает.
РЕДАКТИРОВАТЬ __
Вот мой VB для контейнера:
<ParseChildren(True, "Content")> _
Partial Public Class ctrFormContainer
Inherits System.Web.UI.UserControl
Private _content As FormControlCollection
<PersistenceMode(PersistenceMode.InnerDefaultProperty), _
TemplateInstance(TemplateInstance.Single)> _
Public Property Content() As FormControlCollection
Get
Return _content
End Get
Set(ByVal value As FormControlCollection)
_content = value
End Set
End Property
Protected Overrides Sub CreateChildControls()
If _content IsNot Nothing Then
ctrChildren.Controls.Clear()
For Each i As FormControl In _content
ctrChildren.Controls.Add(i)
Next
End If
MyBase.CreateChildControls()
End Sub
Public Overrides Function FindControl(ByVal id As String) As System.Web.UI.Control
Return MyBase.FindControl(id)
End Function
Public Class FormControlCollection
Inherits List(Of FormControl)
End Class
End Class