如何在转发器中执行if语句

时间:2009-08-21 19:07:58

标签: c# repeater if-statement

<asp:Repeater>让我发疯..

我需要做

<ItemTemplate>
    <% if (Container.DataItem("property") == "test") {%>
        I show this HTML
    <% } else { %>
        I show this other HTML
    <% } %>
</ItemTemplate>

但我无法为我的生活找到任何方法来实现这一目标。三元不是很好,因为HTML的数量非常大,通过DataBind事件设置标签也不是很好,因为我必须在代码隐藏中拥有大块的HTML。

当然有办法做到这一点......

6 个答案:

答案 0 :(得分:20)

您可以使用服务器端可见性:

<ItemTemplate>
    <div runat="server" visible='<% (Container.DataItem("property") == "test") %>'>
        I show this HTML
    </div>
    <div runat="server" visible='<% (Container.DataItem("property") != "test") %>'>
        I show this other HTML
    </div>
</ItemTemplate>

答案 1 :(得分:7)

您可以尝试创建一种ViewModel类,对代码隐藏做出决定,然后对转发器感到满意,只需显示正在提供的数据。

这是一种将逻辑与UI分开的方法。然后,您可以使用一个简单的UI来显示数据,而无需决定显示什么/如何显示。

答案 2 :(得分:3)

您可以使用用户控件执行此操作:

<ItemTemplate>
    <uc:Content1 runat='server' id='content1' visible='<%# Container.DataItem("property") == "test" %>'/>
    <uc:Content2 runat='server' id='content2' visible='<%# Container.DataItem("property") != "test" %>'/>
</ItemTemplate>

答案 3 :(得分:3)

看起来我把这与实际的数据绑定混淆了

<击> 你可以这样做:

<asp:Repeater runat="server"> 
    <ItemTemplate>    
        <% if (((Product)Container.DataItem).Enabled) { %>
        buy it now!
        <% } else {%>
        come back later!
        <% } %>
    </ItemTemplate>
</asp:Repeater>

<击>

答案 4 :(得分:0)

我遇到了类似的问题,偶然发现了这个页面。感谢你们给出了很好的答案,Gavin和Keltex让我走上了正确的道路,但是我在我的页面上工作时有点棘手。最终我能够使用这个布尔值,所以我想分享后代:

显示复选框,如果错误

<asp:CheckBox ID="chk_FollowUp" Visible='<%# (DataBinder.Eval(Container.DataItem, "FollowUp").ToString() == "False") %>' runat="server" />

显示标志img如果为真

<asp:Image ID="img_FollowUp" AlternateText="Flagged" ImageUrl="Images/flag.gif" runat="server"
     Visible='<%# DataBinder.Eval(Container.DataItem, "FollowUp") %>' Height="30" Width="30" />

答案 5 :(得分:0)

首先,你必须在Page.cs文件中定义一个Count变量

 <%if (Count == 0)
                         {
                             %>
                    <div style="background-color:#cfe9ed" class="wid_100 left special_text"><%# Eval("CompanyName") %></div>
                       <%}
                         else if (Count == TotalCount - 1)
                         {
                             %>
                        <div style="background-color:#f2f1aa" class="wid_100 left special_text"><%# Eval("CompanyName") %></div>
                        <%}
                         else
                         {
                              %>
                       <div class="wid_100 left special_text"><%# Eval("CompanyName") %></div><% } %>
                       <%Count++;  %>