Я хочу, чтобы мой пользовательский элемент управления мог иметь буквальное содержимое внутри него. Например:
<fc:Text runat="server">Please enter your login information:</fc:Text>
В настоящее время код моего пользовательского элемента управления:
<ParseChildren(True, "Content")> _
Partial Public Class ctrFormText
Inherits UserControl
Private _content As ArrayList
<PersistenceMode(PersistenceMode.InnerDefaultProperty), _
DesignerSerializationVisibility(DesignerSerializationVisibility.Content), _
TemplateInstance(TemplateInstance.Single)> _
Public Property Content() As ArrayList
Get
If _content Is Nothing Then
Return New ArrayList
End If
Return _content
End Get
Set(ByVal value As ArrayList)
_content = value
End Set
End Property
Protected Overrides Sub CreateChildControls()
If _content IsNot Nothing Then
ctrChildren.Controls.Clear()
For Each i As Control In _content
ctrChildren.Controls.Add(i)
Next
End If
MyBase.CreateChildControls()
End Sub
End Class
И когда я помещаю текст в этот элемент управления (как выше), я получаю эту ошибку:
Parser Error Message: Literal content ('Please enter your login information to access CKMS:') is not allowed within a 'System.Collections.ArrayList'.
Этот элемент управления может иметь другое содержимое, кроме только текста, поэтому присвоение атрибуту Content свойства не решит мою проблему.
В некоторых местах я обнаружил, что мне нужно реализовать класс ControlBuilder вместе с другим классом, реализующим IParserAccessor.
В любом случае, я просто хочу, чтобы в свойстве «Содержимое» по умолчанию были разрешены все типы элементов управления, как литеральные, так и фактические.