0

所以我有类似的东西:静态配置类,它在项目中的任何地方都使用,有一个布尔属性让我们说属性。所以我想找到一种在 aspx 标记中设置此属性的方法。

<asp:Column ..... Visible='<%: Config.Property %>' > 

不起作用。我也试过:

'<%# Config.Property %>'
'<%$ Config.Property %>'
'<%= Config.Property %>'
'<% Config.Property %>'

以及以上所有不带“'”的内容。有什么办法可以解决吗?我不想在后面的代码中设置它,我有理由不这样做。

4

1 回答 1

1

您遇到问题的原因是因为服务器控件上每个属性的字符串值都被评估并解析为所需的类型。因此,您可以将属性设置为“True”或“true”,但不能设置为需要评估的表达式。为了解决这个问题,您必须使用数据绑定语法,如下所示:

<asp:Column ..... Visible="<%# Config.Property %>" >

使用数据绑定表达式的问题是您需要在控件本身或页面本身上执行 DataBind() 方法。如果您决定稍后在页面的其他位置使用绑定控件,则在页面本身上调用它可能会产生不良的副作用。因此,为此,我们将添加一个执行 DataBind() 方法的“假元标记”,如下所示:

<asp:Column ..... Visible="<%# Config.Property %>" meta:bind='<% DataBind(); %>' >

您不必调用它bind。您可以随意调用元标记。这将强制 ASP.NET 引擎对此控件执行 DataBind,并且它应该评估和解析Config.Property表达式。

于 2014-10-01T16:54:26.653 回答