2011-03-08 4 views
21

un Supposons que je contrôle utilisateur comme celui-ciAttribut personnalisé dans UserControl (* .ascx)?

<MyTag:MyWidget runat="server" /> 

Je me demande si je peux faire quelque chose comme

<MyTag:MyWidget runat="server" MemberHeight="400" PublicHeight="200" /> 

Alors que MyWidget.ascx je peux avoir

<div height="<%=IsLoggedIn ? MemberHeight : PublicHeight%>"> 

ou quelque chose comme ca...? Parce que je veux que la hauteur varie dans chaque page qui utilise ce widget.

+1

Avez-vous essayé? Il est possible d'exposer des propriétés publiques dans votre UserControl que vous pouvez définir comme s'il s'agissait d'une propriété standard de UserControl (comme Visible) dans le balisage aspx. Ces propriétés doivent être sérialisables (f.e String ou Integer). –

Répondre

28

Ajouter une propriété publique à quelque chose de classe UserControl comme ...

public int MySize { get; set; } 
+1

C'est la bonne réponse (bien que dans votre cas, vous allez ajouter deux propriétés nommées MemberHeight et PublicHeight). – Jacob

+0

Apparemment, cela ne fonctionne pas si vous déclarez la propriété comme protégée. tu sais pourquoi? – fengd

+0

@ Jun1st - 'protected' signifie que seules les classes étendues peuvent accéder à cette propriété. Dans ce cas, il s'agit d'une page/commande différente qui doit accéder à la propriété. –

11

Vous devez définir les propriétés publiques pour les deux articles, en tant que tels:

public int MemberHeight{ get; set; } 
public int PublicHeight{ get; set; } 
Questions connexes