asp.net mvc - 在Razor中提供备用行样式的最简单方法

Dav*_*vid 10 asp.net asp.net-mvc razor

给出以下Razor代码:

<tbody>
    @foreach (Profession profession in Model)
    {
        <tr>
            <td>@profession.Name</td>
            <td>@profession.PluralName</td>
            <td>@Html.ActionLink("Edit", "AddOrEdit", new { Id = profession.ProfessionID })</td>
        </tr>
    }
</tbody>
Run Code Online (Sandbox Code Playgroud)

提供某种替代行样式的最简单方法是什么?(即奇数行和偶数行的不同样式.)

我似乎无法添加任意C#来声明一个bool变量,该变量在foreach循环的每次迭代中被翻转以便tr为例如设置类名.

har*_*ott 45

我建议在直接CSS中执行此操作(有关详细信息,请参阅此处):

tr:nth-child(odd)    { background-color:#eee; }
tr:nth-child(even)   { background-color:#fff; }
Run Code Online (Sandbox Code Playgroud)

  • 现代浏览器支持它.对于传统浏览器,不会有交替的行颜色=>并不是什么大不了的事.使用旧版浏览器的人可能已经习惯于在互联网上看到不同的呈现网站. (7认同)
  • 这是CSS3.**并非每个浏览器都支持它.** (6认同)

Ali*_*tad 10

JQuery可以在客户端做到这一点(我可能会在这里使用客户端脚本而不是服务器逻辑).

 $("tr:odd").css("background-color", "#bbbbff");
Run Code Online (Sandbox Code Playgroud)

您还可以使用一个简单的变量来设置css类(几乎是伪代码):

@foreach (Profession profession in Model)
{
    @i++;
    <td class="@i%2==0?"even":"odd""> 

}
Run Code Online (Sandbox Code Playgroud)

  • 为避免视觉工作室使用括号的投诉,例如<tr class ="@(i%2 == 0?"":"alt")"> (2认同)