我一直在使用像 <%=whatever %> 这样的服务器标签来设置 runat="server" 控件的可见性,如下所示:
<div id="MyId" runat="server" visible="<%=MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
这适用于框架 4,但现在尝试在框架 3.5 项目上使用它似乎不起作用。这是 Framework 4 唯一的功能吗?从代码隐藏设置可见性是否有最酷(和 .aspx 方面)的替代方法?我正在使用丑陋的:
MiId.Visible = MyVisiblePropertyOnCodeBehind
提前致谢,
汤姆
[编辑]解决方案:
感谢您的评论让我了解我的问题和解决方案!
我的错不止一件事。
在 VS2010 项目中,我们使用 <%# 而不是 <%=
另外,我没有注意到在 VS2010 项目中,我们使用的页面不是从“Page”继承,而是从 CustomPage 类继承,它会自动进行绑定,而我没有注意到它,这让我认为这是一个框架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() 会降低应用程序的性能。你知道多少钱吗?这是否可以理解为在大型项目中使用的“专业”技术,还是您认为应该避免?
我喜欢它使标记在单个视图中可读且易于理解的方式,但我不想因此而对缓慢的代码感到内疚。