2011-12-15 4 views
3

Je développe un contrôle personnalisé (4.0) et je me demande comment réutiliser une classe d'entreprise en tant que propriété sans la réécrire.Contrôle personnalisé ASP.NET avec propriétés complexes

J'ai un ensemble de classe dans mon ensemble de couches d'affaires (simplifié):

public class LatLng 
{ 
    public decimal Lat { get; set; } 
    public decimal Lng { get; set; } 
} 

public class MapOptions 
{ 
    ... 
    public LatLng Center { get; set; } 
    ... 
} 

etc... 

Ce que je veux est de réutiliser la classe MapOptions comme propriété, mon contrôle personnalisé est quelque chose comme:

public class MyControl : WebControl 
{ 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty)] 
    public MapOptions MapOptions 
    { 
     ... 

     get 
     { 
      return this.ViewState["MapOptions"] as MapOptions; 
     } 
     set 
     { 
      this.ViewState["MapOptions"] = value; 
     } 

     ... 
    } 
} 

Mais de cette manière je ne suis pas capable de voir les propriétés de LatLng (et des autres classes utilisées comme propriétés par MapOptions) comme section interne de la balise MapOptions. Seulement comme attribut. Ainsi, dans le balisage je suis capable d'écrire:

<rec:MyControl ID="control1" runat="server" Width="900" Height="500"> 
    <MapOptions Center="" /> 
</rec:MyControl> 

Mais de cette façon que je perds la IntelliSense pour tous exposés par LatLng, je suis à la recherche d'une solution pour obtenir ceci:

<rec:MyControl ID="control1" runat="server" Width="900" Height="500"> 
    <MapOptions> 
     <Center Lat="12.0" Lng="2.0" /> 
    </MapOptions> 
</rec:MyControl> 

Une suggestion?

Répondre

0

Essayez d'ajouter tag [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty)] à public class LatLng

Questions connexes