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

时间:2018-08-08 07:16:52

标签: css asp.net repeater

我正在尝试创建一个转发器,该转发器包含具有动态类,动态背景色和图标(在运行时放置)的元素。 我有一个中继器

<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中的动态值应用类

<div if("<%#Eval("id") %>"= 1 ? " class=panel-primary )>

何时

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

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

1 个答案:

答案 0 :(得分:3)

您不能只在HTML中的某个地方写一个if并期望它能工作。您需要一个代码块。

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

如果您想要更多的评估来生成一个类,我会在后面的代码中推荐一个方法。

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"))) %>">