嵌入式代码块中反转布尔值

时间:2017-03-12 23:19:18

标签: c# asp.net

我通过DataSource中的布尔类型列控制GridView中控件的可见性。 在标记中我使用嵌入式代码块:

<asp:Label ID="LabelTitle" runat="server" 
           Text = '<%# Bind("Title") %>' Visible='<%# Eval("SQL_Column") %>'/>

有没有办法反转这个表达式?如果SQL_Column为false,我希望显示Textbox TextBoxTitle,反之亦然。

这样的东西
Visible='<%# Eval(!"SQL_Column") %>'

我不想从Code Behind那里做到。

马丁

2 个答案:

答案 0 :(得分:2)

Eval返回对象;您不能将感叹号运算符应用于对象。

相反,您需要先转换为布尔值。

<asp:Label ID="LabelTitle" runat="server" 
    Text = '<%# Bind("Title") %>' 
    Visible='<%# !Convert.ToBoolean(Eval("SQL_Column")) %>'/>

答案 1 :(得分:1)

您需要在!声明之外进行Eval()反转。

!(bool)Eval("SQL_Column")

你拥有它的方式,!"..."意味着你正在尝试对字符串本身应用not操作,这没有意义。在Eval()之前,not操作意味着您试图反转评估的返回值。

请注意,您需要将对象的求值值显式地转换为布尔值,以便能够将其反转。