我正在尝试将标签的visible属性设置为true或false,具体取决于条件。这是在ASPX页面中。我做错了什么,并在执行时遇到错误。
<td><asp:Label ID="Label23" runat="server" Text='CERTIFIED'
Visible='<%# DataBinder.Eval(Container.DataItem, "IsAuthorized") > 0%>'>
</asp:Label></td>
我得到的错误低于。
编译器错误消息:CS0019:运算符'&gt;'无法应用 'object'和'int'类型的操作数
需要做哪些更改?
当'IsAuthorized'大于零时,我需要做的就是将LABEL的visible属性设置为true。
答案 0 :(得分:10)
那是因为你有语法错误,你傻兔子。
在这里,它应该是这样的:
<td><asp:Label ID="Label23" runat="server" Text='CERTIFIED' Visible='<%# DataBinder.Eval(Container.DataItem, "IsAuthorized") %>' /></td>
你在那里有一个额外的>
和一个0
。
此外,由于您未在<asp:Label
和</asp:Label>
之间执行任何操作,因此可以使用结束斜杠关闭它并跳过单独的结束标记。像这样<asp:Label ... />
另外,有时尝试设置这样的可见属性会导致问题,程序可能会抱怨该值不是布尔值。您可能还希望像这样进行显式转换:
Visible='<%# Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "IsAuthorized")) %>'
答案 1 :(得分:4)
假设IsAuthorized
是一个位类型,只需将其强制转换为布尔值:
Visible='<%#Convert.ToBoolean(Eval("IsAuthorized"))%>'
答案 2 :(得分:2)
关于服务器端控件的注意事项,您可以这样做:
<someControl id="myId" runat="server" Visible='<%# this.SomeField > 5 %>'>
但是除非你在后面的代码中调用DataBind,否则它将无法工作,例如在Page_Load中:
myId.DataBind():
答案 3 :(得分:1)
假设IsAuthorized
是一个整数,你应该使用它:
Visible='<%# ((int)DataBinder.Eval(Container.DataItem, "IsAuthorized")) > 0 %>'
Eval会返回object
,因此您必须先将其转换为integer
。
答案 4 :(得分:0)
<td><asp:Label ID="Label23" runat="server" Text='CERTIFIED' Visible='<%# (int)(DataBinder.Eval(Container.DataItem, "IsAuthorized")) > 0 %>' ></asp:Label></td>