if / else里面的listview和formview,asp.net c#

时间:2014-04-08 13:50:49

标签: c# asp.net listview if-statement

我有一个“专辑”数据库,我通过listview和formview(在2个单独的页面中)向客户展示了这些数据库:

<asp:ListView ID="Albums_List" runat="server" DataKeyNames="id" ItemType="Trying.Models.Album" SelectMethod="GetAlbum">
    <ItemTemplate>
         <%#:(Item.price == 0) ? "It's Free!" : String.Format("Price: {0:c}", Item.price)%><br />
         Artist:<%#:" " + Item.artist %><br />
    </ItemTemplate>
</asp:ListView>

如你所见,如果价格= 0,我使用三元运算符显示“它是免费的”,如果它不是0则显示价格本身。

现在我想用(例如)div和红色显示“它是免费的”。

这是我渴望做的“方案”(请注意,它不是真正的c#代码):

<% if (Item.price == 0) { %>
    <div style="color: red;">It's Free</div>
<% } 
else { %>
    String.Format(" {0:c}", Item.price)
<% } %>  

不幸的是,上面的代码无效。要访问“Item.price”,我必须使用&lt;%#:%&gt;而不是&lt; %%&gt;。但如果我这样做,我就不能使用“if / else”!此外,String.Format()在这个“方案”中不起作用。

怎么做?

1 个答案:

答案 0 :(得分:4)

<ItemTemplate>
    <asp:PlaceHolder runat="server" visible='<%# Item.price == 0 %>'>
           <div style="color: red;">It's Free</div>
    </asp:PlaceHolder>

    <asp:PlaceHolder runat="server" visible='<%# Item.price > 0 %>'>
         <%# String.Format(" {0:c}", Item.price) %>
    </asp:PlaceHolder>
</ItemTemplate>