2010-11-14 43 views
0

J'ai un contrôle qui regarde le long des lignes de ce:contrôle lié liaison de ASP.NET balisage

public class MyControl : Control 
{ 
    [Bindable(true)] 
    public MyControl MyControlParent { get; set; } 
    // snip 
} 

Dans mon code, je veux ce qui suit:

<tag:MyControl ID="foo" runat="server"> 
    <tag:MyControl ID="bar" MyControlParent="foo" runat="server"></tag:MyControl> 
</tag:MyControl> 

La raison de vouloir me pour être en mesure de nommer un parent comme celui-ci est parce que je voudrais aussi être en mesure de faire quelque chose comme ceci: ou

<tag:MyControl ID="foo" runat="server"> 
    <tag:MyControl ID="foobar" runat="server"> 
     <tag:MyControl ID="bar" MyControlParent="foo" runat="server"></tag:MyControl> 
    </tag:MyControl> 
</tag:MyControl> 

ou

<tag:MyControl ID="foo" runat="server"></tag:MyControl> 
<!-- snip --> 
<tag:MyControl ID="bar" MyControlParent="foo" runat="server"></tag:MyControl> 

J'ai essayé d'ajouter un convertisseur de type, mais il se déclenche avant de HttpContext.Current.Handler est réglé qui signifie que je ne peux pas rechercher les contrôles de page pour l'instance de MyControl souhaitée . La relation parent-enfant dans ce contrôle donne certains héritages de valeurs de propriété et ne signifie pas nécessairement que (lire ne devrait pas) impliquer une relation parent-enfant dans l'arbre de contrôle.

Existe-t-il une solution (pratique) à ce problème ou en veux-tu plus que ce qui est possible maintenant? =)

Vive
// Daniel

Répondre

0

Le problème de base avec votre code est que vous définissez la propriété MyControlParent à l'ID du contrôle parent de ne pas le contrôle lui-même, mais la propriété est déclarée avec le type MyControl. Il serait OK de changer le type de votre propriété en une chaîne, et puis, ailleurs dans votre code, recherchez le contrôle réel de l'ID.

+0

Ce serait une solution. Mais je ne pense pas que ce soit aussi agréable et propre à le faire de cette façon, sauf si vous pouvez cacher MyControlParent du balisage et MyControlParentID du code derrière. Je suis en train d'examiner cette solution, et si cela se passe, je vais marquer le vôtre comme réponse. Merci et à bientôt! – Daniel

+0

Bien que je ne sois pas très content de la solution, je vous remercie pour la réponse! =) Je me sens en quelque sorte dépouillé d'une belle fonctionnalité. Il était assez facile de rendre MyControlParent non-lisible à partir du balisage, mais je n'ai toujours pas trouvé un moyen de cacher MyControlParentID dans le code derrière. C'était normal car il serait probablement bizarre d'avoir une propriété non disponible sur le CB, même si cela rendrait le code plus agréable, à mon avis de toute façon^_^Salut! – Daniel