2010-12-14 29 views
0

Je me demande s'il est possible d'envoyer un tableau de chaînes à la propriété d'une baliseEnvoi d'un tableau comme propriété de la balise serveur

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

Cela ne fonctionne pas car il envoie « {article1, article2, item3, item4} "en tant que chaîne de la classe.

Répondre

3

mieux de faire cela dans le code derrière

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

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

Vous devrez peut-être ajouter des attributs à votre propriété, mais vous devriez être en mesure de continuer à utiliser le côté xml pour effectuer la mission:

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

Cet article pourrait fournir un aperçu supplémentaire: http://msdn.microsoft.com/en-us/library/aa478964.aspx

0

Je sais que vous avez déjà accepté une réponse, mais je voulais vous faire savoir qu'il est possible de faire ce que vous essayez de faire en utilisant un convertisseur de type. Je préfère cette méthode car elle rend le contrôle plus convivial et plus facile à utiliser pour les autres.

Utilisation: (désolé pour le code VB ...)

<cc1:ServerControl1 ID="ServerControl11" runat="server" Items="Testing,Test2,Test3,Test4,Test5" /> 

code:

La clé est l'utilisation de l'attribut TypeConverter sur la propriété (voir après cette classe pour la définition).

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