Ich weiß, dass Sie bereits eine Antwort akzeptiert haben, aber ich wollte Sie wissen lassen, dass es möglich ist, das zu tun, was Sie versuchen Verwenden Sie einen Typkonverter. Ich bevorzuge diese Methode, da sie die Steuerung für andere Designer freundlicher und für andere einfacher macht.
Gebrauch: (sorry für den VB-Code ...)
<cc1:ServerControl1 ID="ServerControl11" runat="server" Items="Testing,Test2,Test3,Test4,Test5" />
Code:
Der Schlüssel ist die Verwendung des Attributs Typeconverter auf dem Grundstück (siehe nach dieser Klasse für die Definition).
Public Class ServerControl1
Inherits WebControl
<TypeConverter(GetType(StringToArray))> _
Public Property Items() As String()
Get
If ViewState("Items") IsNot Nothing Then
Return ViewState("Items")
Else
Return New String() {}
End If
End Get
Set(ByVal value As String())
ViewState("Items") = value
End Set
End Property
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
MyBase.Render(writer)
For Each s As String In Items
writer.Write(String.Format("-{0}<br/>", s))
Next
End Sub
End Class
Public Class StringToArray
Inherits TypeConverter
Public Overloads Overrides Function CanConvertFrom(ByVal context As ITypeDescriptorContext, ByVal sourceType As Type) As Boolean
If sourceType Is GetType(String) Then
Return True
End If
Return MyBase.CanConvertFrom(context, sourceType)
End Function
Public Overloads Overrides Function ConvertFrom(ByVal context As ITypeDescriptorContext, ByVal culture As CultureInfo, ByVal value As Object) As Object
If TypeOf value Is String Then
Dim v As String() = CStr(value).Split(New Char() {","c})
Return v
End If
Return MyBase.ConvertFrom(context, culture, value)
End Function
End Class