我一直在一个.NET Framework 4项目中工作,使用服务器标签(如<%=whatever %>)来设置runat="server"控件的可见性,就像下面这样:
<div id="MyId" runat="server" visible="<%=MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
这在框架4上有效,但现在尝试在框架3.5项目中使用它似乎不起作用。这是仅适用于Framework 4的功能吗?是否有更酷的(并且.aspx端)替代方案来从codebehind设置可见性?我正在使用丑陋的:
MiId.Visible = MyVisiblePropertyOnCodeBehind
[编辑] 解决方案:
感谢你的评论,让我理解了我的问题和解决方案!
问题出在我犯了多个错误。
我们在VS2010项目中使用了<%#而不是<%=。
此外,我没有注意到在VS2010项目中,我们使用的页面不是继承自“Page”,而是继承自CustomPage类,该类可以自动进行绑定,而我没有注意到这一点,这使我认为这是一个只有Framework 4.0才有的功能。
正如您在此处所述,如果您具有以下标记:
<div id="MyId" runat="server" visible="<%# MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
你可以让它工作,只需在代码后台添加以下内容:
public bool MyVisiblePropertyOnCodeBehind = true;
protected void Page_Load(object sender, EventArgs e) {
DataBind();
// Or if you want only for one control, MyId.DataBind();
}
据我所知,使用DataBind()可能会降低应用程序的性能。你有没有想法这可能会造成多少影响?它是否可以被理解为一种适用于大型项目的“专业技术”,还是应该避免使用?
我喜欢它使标记在一个视图中易读易懂的方式,但我不希望因此而导致代码运行缓慢。