2011-03-08 21 views
21

Suponiendo que tener un control de usuario como estoAtributo personalizado en UserControl (* .ascx)?

<MyTag:MyWidget runat="server" /> 

Me pregunto si puedo hacer algo como

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

Para que en MyWidget.ascx puedo tener

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

o algo como eso...? Porque quiero que la altura varíe en cada página que usa este widget.

+1

¿Lo has probado? Es posible exponer propiedades públicas en su UserControl que puede establecer como si fuera una propiedad estándar de UserControl (como Visible) en el marcado aspx. Estas propiedades deben ser serializables (por ejemplo, Cadena o Entero). –

Respuesta

28

Añadir una propiedad pública a la clase UserControl algo así como ...

public int MySize { get; set; } 
+1

Esta es la respuesta correcta (aunque en su caso, agregará dos propiedades llamadas MemberHeight y PublicHeight). – Jacob

+0

Parece que no está funcionando si declara la propiedad como protegida. ¿sabes por qué? – fengd

+0

@ Jun1st - 'protected' significa que solo las clases extendidas pueden acceder a esa propiedad. En este caso, es una página/control diferente que necesita acceder a la propiedad. –

11

Es necesario definir las propiedades públicas para ambos elementos, tales como:

public int MemberHeight{ get; set; } 
public int PublicHeight{ get; set; } 
Cuestiones relacionadas