Set Propriedade visível com a tag do servidor <% =%> no Framework 3.5
Estive trabalhando em um projeto do .NET Framework 4 usando tags de servidor como <% = Whatever%> para definir a visibilidade dos controles runat = "server", como o seguinte:
<div id="MyId" runat="server" visible="<%=MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
Isso funciona no framework 4, mas agora, ao tentar usá-lo em um projeto do Framework 3.5, parece não funcionar. Esse é um recurso exclusivo do Framework 4? Existe uma alternativa mais legal (e lado .aspx) para definir a visibilidade por trás do código? Estou usando o feio:
MiId.Visible = MyVisiblePropertyOnCodeBehind
Desde já, obrigado
Tom
[EDITADO] SOLUÇÃO:
Obrigado pelos seus comentários que me fazem entender o meu problema e a soluçã
Foi minha culpa em mais de uma coisa.
No projeto VS2010, estávamos usando <% # em vez de <% =
Além disso, eu não percebi que no projeto VS2010 estávamos usando páginas herdadas não da “Page”, mas de uma classe CustomPage, que fazia a ligação automaticamente, sem que eu percebesse, e isso me faz pensar que era um Recurso apenas do Framework 4.0.
Como você disse aqui, se você tiver a seguinte marcação:
<div id="MyId" runat="server" visible="<%# MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
você pode fazê-lo funcionar, adicionando o seguinte ao código abaixo:
public bool MyVisiblePropertyOnCodeBehind = true;
protected void Page_Load(object sender, EventArgs e) {
DataBind();
// Or if you want only for one control, MyId.DataBind();
}
Como eu li, esse DataBind () pode reduzir o desempenho do aplicativo. Você tem idéia de quanto? Isso poderia ser entendido como uma técnica “profissional” a ser usada em grandes projetos ou você acha que deveria ser evitada?
Eu adoro o modo como torna a marcação legível e fácil de entender em uma única exibição, mas eu não gostaria de ser culpado pelo código lento por isso.