2014-04-08 43 views
0

我有 “相册” 的数据库,我已经通过的ListView和FormView(在2个独立的页)他们展示给客户:的if/else里面的ListView和FormView,asp.net C#

<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,则显示价格本身。

现在我想要显示“它是免费的”格和红颜色。

这里是什么我渴望做“方案”(PLZ注意它不是真正的C#代码):

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

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

该怎么办?

+0

如果我使用上面的“scheme”(现在没有string.format()),我得到这个:名称“Item”在当前上下文中不存在。 – Ali

+0

如果我使用<%: %>,除了我上面提到的错误,我也得到这个:无效的表达式术语“if” – Ali

回答

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> 
+1

是的!这是工作!非常感谢! – Ali