I have been working in a .NET Framework 4 project using server tags like <%=whatever %> to set the visibility of runat="server" controls, like the following:
<div id="MyId" runat="server" visible="<%=MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
This works on framework 4, but now trying to use this on a Framework 3.5 project it doesn't seems to work. Is this a Framework 4 only feature? Is there a coolest (and .aspx side) alternative to setting the visibility from codebehind? I'm using the ugly:
MiId.Visible = MyVisiblePropertyOnCodeBehind
Thanks in advance,
Tom
[EDITED] SOLUTION:
Thanks for your comments that makes me understand my problem and the solution!
It was my fault in more than one thing.
In the VS2010 project we were using <%# instead of <%=
Also, I didn’t notice that in the VS2010 project we were using pages inherited not from “Page”, but from a CustomPage class, that was making the binding automatically, without me noticing it, and that makes me think that was a Framework 4.0 only feature.
As you told here, if you have the following markup:
<div id="MyId" runat="server" visible="<%# MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
you can make it work, adding the following to the codebehind:
public bool MyVisiblePropertyOnCodeBehind = true;
protected void Page_Load(object sender, EventArgs e) {
DataBind();
// Or if you want only for one control, MyId.DataBind();
}
As I read, this DataBind() can reduce performance of the application. Do you have idea of how much? Could this be understood as a “professional” technique to be used on big projects, or do you think it should be avoided?
I love the way it makes markup readable and easy to understand in a single view, but I wouldn’t like to be guilty of slow code because that.
See Question&Answers more detail:
os