2010-12-14 11 views
0

Ich frage mich, ob es möglich ist ein Array von Strings zu einem Tag-Eigenschaft sendenSenden eines Arrays als eine Eigenschaft des Server-Tag

<SampleTag:Form 
    runat="server" 
    ID="sampleform1" 
    Items={item1,item2,item3,item4} 
> 
</SampleTag:Form> 

Dies funktioniert nicht, da es „sendet {item1, item2, item3, item4} "als String für die Klasse.

Antwort

3

Besser dies hinter

in Code tun
<SampleTag:Form runat="server" ID="sampleform1"></SampleTag:Form> 

sampleform1.Items = new { item1, item2, item3, item4 }; 
2

Sie müssen Attribute zu Ihrer Eigenschaft hinzufügen können, aber Sie sollten mit Hilfe der XML-Seite weiterhin in der Lage sein, die Zuordnung auszuführen:

<SampleTag:Form 
    runat="server" 
    ID="sampleform1"> 

    <Items ID="item1">item1</Items> 
    <Items ID="item2">item2</Items> 
    <Items ID="item3">item3</Items> 
    <Items ID="item4">item4</Items> 

</SampleTag> 

Dieser Artikel bietet möglicherweise einige zusätzliche Informationen: http://msdn.microsoft.com/en-us/library/aa478964.aspx

0

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 
Verwandte Themen