如何在 Razor + umbraco 中为 @foreach 的交替项目提供交替 class

how to give alternating class to alternating item of @foreach look in Razor + umbraco

我正在使用 Umbraco 7.x

我需要一些东西,例如在为每个使用生成的列表项中。交替项需要分别给class.

他们的任务是确定偶数行和奇数行以给出各自的 class 名称。

如下是我的代码。

@foreach (var itemTblRows in @Model.Children) 
        {       
         <tr class="light">
                <td>@itemTblRows.ABL_tableData1</td>
                <td>@itemTblRows.ABL_tableData2</td>
                <td>@itemTblRows.ABL_tableData3</td>
                <td>@itemTblRows.ABL_tableData4</td>
              </tr>
        }

我不喜欢使用 CSS 和 JS 来这样做,因为在其他情况下(使用 diff.layout)它不会工作。

创建一个计数器变量 c,您将在每个循环中递增该变量。在每个循环中使用 2 作为分母执行模数 (%)。如果结果大于 0 那么它是 奇数 否则 偶数

    var c = 1;
    @foreach (var itemTblRows in @Model.Children)
    {
        var oddEvenClass = c % 2 > 0 ? "odd" : "even";
        c += 1;
        <tr class="light @oddEvenClass">
            <td>@itemTblRows.ABL_tableData1</td>
            <td>@itemTblRows.ABL_tableData2</td>
            <td>@itemTblRows.ABL_tableData3</td>
            <td>@itemTblRows.ABL_tableData4</td>
        </tr>
    }

您可以使用 IsOddIsEven 辅助方法轻松完成:

<tr class="@itemTblRows.IsOdd("odd","even")>

<tr class="@itemTblRows.IsEven("even","odd")>

这里有一个简单的 CSS 方法来实现您正在寻找的结果。首先,添加一个class到table这些行属于:

<table class="striped">
@foreach (var itemTblRows in @Model.Children) 
{       
   <tr>
        <td>@itemTblRows.ABL_tableData1</td>
        <td>@itemTblRows.ABL_tableData2</td>
        <td>@itemTblRows.ABL_tableData3</td>
        <td>@itemTblRows.ABL_tableData4</td>
   </tr>
}
</table>

然后添加这些 CSS 规则:

table.striped tr:nth-child(even) { background-color: grey; }
table.striped tr:nth-child(odd) { background-color: white; }

然后根据需要添加 CSS。 nth-child(n) select 或者允许你 select 每 nth [=26= 】 那是一场比赛。指定奇数或偶数允许您在每个奇数 child 或每个偶数 child.

中取 select