内联代码不作为后面的代码执行

时间:2014-07-31 18:55:51

标签: asp.net webforms

注意:另一篇帖子(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>

2 个答案:

答案 0 :(得分:1)

由于<%# %>是数据绑定表达式,因此我非常确定您必须致电Page.DataBind()。试一试:

protected void Page_Load(object sender, EventArgs e) 
{
     DataBind();
}

答案 1 :(得分:-3)

您的内联代码无法正常工作的原因是因为!=是比较运算符而不是赋值运算符。你没有把它设置为假。