【问题标题】:Template Razor Delegates - alternate row模板 Razor 代表 - 备用行
【发布时间】:2012-02-20 15:45:30
【问题描述】:

如何扩展 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 的浏览器。

【问题讨论】:

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


    【解决方案1】:

    如果你必须有一个服务器端的解决方案,可以这样做:

    @{ 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 == 1
    • @Tommy 因为我没有仔细阅读保罗的回答。 +1 优雅。
    【解决方案2】:

    我认为仅使用 CSS 也可以解决您所说的问题:

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


    在您编辑

    之后更新我的答案

    我对@9​​87654324@这个模板机制不熟悉,感谢分享,反正我读了它以更好地理解它。

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

    我想可以使用这种技术编写一个特定的表格模板并达到您想要的结果,但恕我直言 foreach 路线更简单。

    【讨论】:

    • +1 CSS 是实现需求的最简单方法。这样的事情对你有好处吗? stackoverflow.com/questions/267033/…
    • 感谢尼克的链接。这不会帮助我建立一个列表或交替行。我知道如何使用简单的 foreach 循环来实现交替行,我正在寻找具有非常易于使用的语法的东西,例如我发布的 Template Razor Delegates 示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多