1

在我看来,我使用带有来自我的模型的对象列表的局部视图,如下所示:

@foreach (var item in Model.MyObjectList)
{
    @Html.Partial("DisplayObject", item)   
}

这在我的主视图中形成了一个网格图案,每个对象有 1 行。

我想用一种颜色的奇数行,另一种颜色的偶数行的正常方法对它们进行条纹。(例如这样

通常你会通过某种模式计算来做到这一点。

问题是如果不将项目中的行号传递到部分视图中,我无法弄清楚如何做到这一点。

有没有更简单的方法?Html.Partial 没有任何我可以挂钩的 html 属性。

我当然可以在部分周围放一张桌子并以这种方式对其进行条纹,但我不希望这样做。

4

4 回答 4

1

我认为您应该将模型中的信息传递给部分视图,或者将部分视图包装在一个元素中并将正确的 css 应用于它......比如:

@foreach (var item in Model.MyObjectList) {
    <li class="odd|even">
    @Html.Partial("DisplayObject", item)  
    </li>  
}
于 2012-06-26T13:26:45.897 回答
1

如果您可以限制对 CSS3 的支持,您可以使用:nth-child(odd):nth-child(even)规则 - 如 W3C 的此页面所示 - http://www.w3.org/Style/Examples/007/evenodd.en.html

这些示例展示了如何在tr标签上使用它 - 但它适用于您可以将选择器应用于的任何内容:

<style type="text/css">
  div p:nth-child(odd) { color:red; }
  div p:nth-child(even) { color:green; }
</style>
<div>
  <p>first</p>
  <p>second</p>
  <p>third</p>
</div>
于 2012-06-26T13:27:06.863 回答
0

ModeViewBag从主视图传递到部分视图。

@foreach (var item in Model.MyObjectList) 
{
    if(ViewBag.Mode == "odd")
    {
       ViewBag.Mode = "even";
    }
    else
    {
      ViewBag.Mode = "odd";
    }

    @Html.Partial("DisplayObject", item)  
}
于 2012-06-26T13:40:20.963 回答
0

将行号作为属性添加到定义每个“项目”的类的定义中。

在局部视图中使用该属性来确定它是奇数行还是偶数行。

于 2012-06-26T13:28:31.800 回答