如何在中继器中应用动态 class?

How to apply dynamic class in repeater?

我正在尝试创建一个中继器,其中包含具有动态 class 的元素,以及动态背景颜色和图标(放置在 运行 时间)。 我有中继器

<asp:Repeater ID="repdashboard" runat="server">
    <HeaderTemplate></HeaderTemplate>
    <ItemTemplate>
        <div class="col-lg-3 col-md-6">

          <div if("<%#Eval("id") %>"= 1 ? " class=panel-primary )>
            <div class="panel-heading">
                <div class="row">
                    <div class="col-xs-3">
                        <i class="fa fa-comments fa-5x"></i>
                    </div>
                    <div class="col-xs-9 text-right">
                        <div class="huge">26</div>
                        <div>'<%#Eval("Tag") %>'!</div>
                    </div>
                </div>
            </div>
            <a href="#">
                <div class="panel-footer" style="color: #337ab7;">
                    <span class="pull-left">View Details</span>
                    <span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
                    <div class="clearfix"></div>
                </div>
            </a>
        </div>
        </div>

    </ItemTemplate>
</asp:Repeater>

我想在div

中代表动态值应用class
<div if("<%#Eval("id") %>"= 1 ? " class=panel-primary )>

`<%#Eval("id") %> = 1`

然后申请 class= panel panel-primary 什么时候 <%#Eval("id") %> = 2 然后应用 class=panel panel-green

您不能只在 html 中的某处写一个 if 并期望它起作用。您需要一个代码块。

<div class="<%# Convert.ToInt32(Eval("id")) == 1 ? "panel panel-primary" : "panel panel-green" %>">

如果你想要更多的评估来生成一个class,我会推荐一个代码隐藏的方法。

public string AddClass(int id)
{
    if (id == 1)
        return "panel panel-primary";
    else if (id == 2)
        return "panel panel-green";
    else
        return "panel other";
}

然后在转发器中

<div class="<%# AddClass(Convert.ToInt32(Eval("id"))) %>">