C# if语句设计视图中的eval

C# if语句设计视图中的eval,c#,asp.net,web-applications,eval,repeater,C#,Asp.net,Web Applications,Eval,Repeater,我有一个显示产品库存的中继器。如果没有库存,我想显示“缺货”。如果有,显示库存数量和单位 我尝试了以下方法: <%#Convert.ToInt32(Eval("AMOUNT")) == 0 ? "Out of stock" : %><%#Eval("AMOUNT") %> <%#Eval("UNIT") %> 及 我在该方法中遇到以下错误: System.invalidoOperationException:诸如Eval()、XPath()和Bind

我有一个显示产品库存的中继器。如果没有库存,我想显示“缺货”。如果有,显示库存数量和单位

我尝试了以下方法:

<%#Convert.ToInt32(Eval("AMOUNT")) == 0 ? "Out of stock" : %><%#Eval("AMOUNT") %> <%#Eval("UNIT") %>


我在该方法中遇到以下错误: System.invalidoOperationException:诸如Eval()、XPath()和Bind()等数据绑定方法只能在数据绑定控件的上下文中使用。


也许有一个简单的解决办法,但我找不到。谢谢

如果条件显然不支持数据绑定,则出现
无效操作异常

<% if ( Convert.ToInt32(Eval("AMOUNT")) == 0) { ... } %>
或者使用强类型属性而不是
Eval

<asp:PlaceHolder ID="AmountPlaceHolder1" runat="server" Visible='<%# Item.Amount == 0 %>'>
    <asp:Label ID="Label1" runat="server" Text='Out of stock'></asp:Label>
</asp:PlaceHolder>
<asp:PlaceHolder ID="AmountPlaceHolder2" runat="server" Visible='<%# Item.Amount > 0 %>'>
    <asp:Label ID="Label2" runat="server" Text='<%# Item.Amount %>'></asp:Label>
</asp:PlaceHolder>

<asp:PlaceHolder ID="AmountPlaceHolder1" runat="server" Visible='<%# Eval("AMOUNT") == 0 %>'>
    <asp:Label ID="Label1" runat="server" Text='Out of stock'></asp:Label>
</asp:PlaceHolder>
<asp:PlaceHolder ID="AmountPlaceHolder2" runat="server" Visible='<%# Eval("AMOUNT") > 0 %>'>
    <asp:Label ID="Label2" runat="server" Text='<%# Eval("AMOUNT") %>'></asp:Label>
</asp:PlaceHolder>
<asp:PlaceHolder ID="AmountPlaceHolder1" runat="server" Visible='<%# Item.Amount == 0 %>'>
    <asp:Label ID="Label1" runat="server" Text='Out of stock'></asp:Label>
</asp:PlaceHolder>
<asp:PlaceHolder ID="AmountPlaceHolder2" runat="server" Visible='<%# Item.Amount > 0 %>'>
    <asp:Label ID="Label2" runat="server" Text='<%# Item.Amount %>'></asp:Label>
</asp:PlaceHolder>