注意:另一篇帖子(Set Visible property with server tag <%= %> in Framework 3.5)也为这个问题提供了更详细的答案。
我很好奇为什么内联代码在这种情况下不像代码隐藏的那样。
我有一个包含以下设置的类:
// Collection of Settings
public static class FeatureControl
{
public static bool SettingName = true;
}
Code Behind按预期执行。
Label1.Visible = FeatureControl.SettingName; //true
Label2.Visible = !FeatureControl.SettingName; //false
内联代码始终显示两个标签,无论SettingName的值如何:
<asp:Label ID="Label1" Visible="<%#FeatureControl.SettingName%>" runat="server" > </asp:Label>
<asp:Label ID="Label2" Visible="<%#FeatureControl.SettingName != true %>" runat="server" ></asp:Label>
答案 0 :(得分:1)
由于<%# %>
是数据绑定表达式,因此我非常确定您必须致电Page.DataBind()
。试一试:
protected void Page_Load(object sender, EventArgs e)
{
DataBind();
}
答案 1 :(得分:-3)
您的内联代码无法正常工作的原因是因为!=
是比较运算符而不是赋值运算符。你没有把它设置为假。