在 if 语句设计视图中求值
eval in if statement design view
我有一个显示产品库存的中继器。如果没有库存,我想展示“缺货”。如果存在,显示库存数量和单位。
我尝试了以下方法:
<%#Convert.ToInt32(Eval("AMOUNT")) == 0 ? "Out of stock" : %><%#Eval("AMOUNT") %> <%#Eval("UNIT") %>
和
<% if ( Convert.ToInt32(Eval("AMOUNT")) == 0) { %>
<asp:Label ID="Label1" runat="server" Text='Out of stock'></asp:Label>
<%} else { %>
<asp:Label ID="Label2" runat="server" Text='<%#Eval("AMOUNT") %>'></asp:Label>
<% } %>
我在这个方法中遇到了这个错误:
System.InvalidOperationException: Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用。
也许有一个简单的解决方案,但我找不到。谢谢。
这个if
条件显然不支持数据绑定,因此出现InvalidOperationException
:
<% if ( Convert.ToInt32(Eval("AMOUNT")) == 0) { ... } %>
由于 if
条件有两个标记块(带有 else
条件),您可以使用两个 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>
或者使用强类型 RepeaterItem.ItemType
属性 而不是 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>
我有一个显示产品库存的中继器。如果没有库存,我想展示“缺货”。如果存在,显示库存数量和单位。
我尝试了以下方法:
<%#Convert.ToInt32(Eval("AMOUNT")) == 0 ? "Out of stock" : %><%#Eval("AMOUNT") %> <%#Eval("UNIT") %>
和
<% if ( Convert.ToInt32(Eval("AMOUNT")) == 0) { %>
<asp:Label ID="Label1" runat="server" Text='Out of stock'></asp:Label>
<%} else { %>
<asp:Label ID="Label2" runat="server" Text='<%#Eval("AMOUNT") %>'></asp:Label>
<% } %>
我在这个方法中遇到了这个错误: System.InvalidOperationException: Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用。
也许有一个简单的解决方案,但我找不到。谢谢。
这个if
条件显然不支持数据绑定,因此出现InvalidOperationException
:
<% if ( Convert.ToInt32(Eval("AMOUNT")) == 0) { ... } %>
由于 if
条件有两个标记块(带有 else
条件),您可以使用两个 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>
或者使用强类型 RepeaterItem.ItemType
属性 而不是 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>