He estado trabajando en un proyecto .NET Framework 4 usando etiquetas de servidor como <% = whatever%> para establecer la visibilidad de los controles runat = "server", como los siguientes:Establecer propiedad visible con etiqueta de servidor <%= %> en Framework 3.5
<div id="MyId" runat="server" visible="<%=MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
esto funciona en el marco 4, pero ahora tratando de utilizar esto en un proyecto Framework 3.5 no parece funcionar. ¿Es esta una característica única de Framework 4? ¿Existe una alternativa más genial (y .aspx) a la configuración de la visibilidad del código subyacente? Estoy usando la fea:
MiId.Visible = MyVisiblePropertyOnCodeBehind
Gracias de antemano,
Tom
[Editado] SOLUCIÓN:
Gracias por sus comentarios que me hace entender mi problema y la ¡solución!
Fue mi culpa en más de una cosa.
En el proyecto VS2010 que estaban usando <% # en lugar de <% =
Además, no me di cuenta de que en el proyecto de VS2010 que estábamos usando páginas no heredan de “página”, pero desde un CustomPage clase, que estaba haciendo el enlace de forma automática, sin que yo lo notara, y eso me hace pensar que era una función de Framework 4.0 solamente.
Como se dijo aquí, si usted tiene la siguiente marcado:
<div id="MyId" runat="server" visible="<%# MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
se puede hacer que funcione, añadiendo lo siguiente en el código subyacente:
public bool MyVisiblePropertyOnCodeBehind = true;
protected void Page_Load(object sender, EventArgs e) {
DataBind();
// Or if you want only for one control, MyId.DataBind();
}
A medida que leía, este DataBind () puede reducir el rendimiento de la aplicación. ¿Tienes idea de cuánto? ¿Podría entenderse esto como una técnica "profesional" para usar en grandes proyectos, o cree que debería evitarse?
Me encanta la forma en que hace que el marcado sea legible y fácil de entender en una sola vista, pero no me gustaría ser culpable de código lento debido a eso.
¿Qué es la firma de su propiedad 'MyVisiblePropertyOnCodeBehind'? – PraveenVenu
En realidad, no creo que sea feo establecerlo en código. Establezca 'visible =" false "' como predeterminado en el frente del código si desea un recordatorio de que el control no es necesariamente visible. – mac9416