【发布时间】:2012-03-24 15:34:08
【问题描述】:
我一直在 .NET Framework 4 项目中工作,使用像 这样的服务器标签来设置 runat="server" 控件的可见性,如下所示:
<div id="MyId" runat="server" visible="<%=MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
这适用于框架 4,但现在尝试在框架 3.5 项目上使用它似乎不起作用。这是 Framework 4 唯一的功能吗?从代码隐藏设置可见性是否有最酷(和 .aspx 方面)的替代方法?我用的是丑的:
MiId.Visible = MyVisiblePropertyOnCodeBehind
提前致谢,
汤姆
[已编辑] 解决方案:
感谢您的 cmets 让我了解我的问题和解决方案!
我的错不止一件事。
在 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() 会降低应用程序的性能。你知道多少钱吗?这是否可以理解为在大型项目中使用的“专业”技术,还是您认为应该避免?
我喜欢它使标记在单个视图中可读且易于理解的方式,但我不希望因此而对缓慢的代码感到内疚。
【问题讨论】:
-
您的“MyVisiblePropertyOnCodeBehind”属性的签名是什么?
-
其实我觉得在后面的代码中设置它并不难看。如果您想提醒控件不一定可见,请在代码前面将
visible="false"设置为默认值。
标签: asp.net .net visible servertag