如何基于asp:Repeater值动态编写HTML

时间:2010-12-13 15:59:52

标签: c# asp.net

我在.aspx页面中使用的asp:Repeater控件看起来类似于:

<ol>
    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <li>                   
                <%# Container.DataItem %>
            </li>
        </ItemTemplate>
    </asp:Repeater>
</ol>

注意:在代码隐藏中,我正在将一个通用的数据列表绑定到Repeater1控件

我正在努力寻找如何捕获Container.DataItem的值,然后根据值更改[li style =“myStyle”]标记的style属性。< / p>

我正在寻找内联解决方案,使伪代码看起来像这样:

<ol>
    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
           <% if(Container.DataItem == "some value")
            {
            <li style="style1">                   
                <%# Container.DataItem %>
            </li>
            }
            else
            {
             <li style="style2">                   
                <%# Container.DataItem %>
            </li>
            }
            %>
        </ItemTemplate>
    </asp:Repeater>
</ol>

是否有一种内联方式来完成上面的示例伪代码?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:2)

您可以尝试:

<ol>
    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <li style="<%# (string) Container.DataItem == "some value" ? "style1" : "style2" %>">                   
                <%# Container.DataItem %>
            </li>
        </ItemTemplate>
    </asp:Repeater>
</ol>

答案 1 :(得分:2)

<ol>
    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
           <%# string value = Container.DataItem as string; %>
            <li class="<%=value == "some value" ? "style1" : "style2" %>">
                <%=value %>
            </li>
        </ItemTemplate>
    </asp:Repeater>
</ol>

答案 2 :(得分:0)

你可以准确地写出来。

但是,您应该将Container.DataItem强制转换为字符串。否则,您将获得参考比较 如果你没有绑定到字符串列表,你可以将Container.DataItem转换为它实际上的任何类型,并用它做事。