模板剃刀代表 - 备用行

时间:2012-02-20 15:45:30

标签: asp.net-mvc asp.net-mvc-3 razor

如何扩展Phil Haack在这里提到的List模板razor委托示例,以便我可以提供备用行css类?

http://haacked.com/archive/2011/02/27/templated-razor-delegates.aspx

我想做类似的事情:

@comics.List(
  @< tr class="@odd">
    < td>@item.Title< /td>
    < td>@item.Publisher< /td>
  )

修改:我不需要javascript或css解决方案。我需要能够支持可能禁用javascript的旧浏览器和浏览器。

2 个答案:

答案 0 :(得分:3)

如果您必须拥有服务器端解决方案,那么这样做会:

@{ var odd = false; }

@comics.List(
    @<tr class="@((odd = !odd) ? "odd-row" : "")">
        <td>@item.Title</td>
        <td>@item.Publisher</td>
  )

应该导致:

<tr class="odd-row">
<tr class="">
<tr class="odd-row">

(odd = !odd)是一个布尔测试加上一个切换标志的 NOT 操作。

答案 1 :(得分:2)

我假设只使用CSS也可以解决你所陈述的问题:

tr:nth-child(even) {background: #CCC}
tr:nth-child(odd) {background: #FFF}


修改

后更新我的回答

我不熟悉这个Razor模板机制,感谢分享,无论如何我读了它以更好地理解它。

不幸的是,这似乎不可能。由于基础HelperResult需要一个名为@item的参数,因此无法添加更多参数。 This article清楚地解释了这个问题。

我想可以使用thistechnique编写一个特定的表格模板,并实现您想要的结果,但恕我直言foreach路线更简单。