Asp.net mvc 3 在MVC 3中为局部视图着色

Asp.net mvc 3 在MVC 3中为局部视图着色,asp.net-mvc-3,css,Asp.net Mvc 3,Css,在我的视图中,我使用局部视图和模型中的对象列表,如下所示: @foreach (var item in Model.MyObjectList) { @Html.Partial("DisplayObject", item) } 这在我的主视图下形成了一个网格模式,每个对象一行 我想用一种颜色的奇数行,另一种颜色的偶数行的普通方法给它们加条纹。(例如 通常你会通过做一些mod计算来做到这一点 问题是,如果不将项中的行号传递到部分视图中,我就不知道如何执行此操作 有没有更简单的方法?H

在我的视图中,我使用局部视图和模型中的对象列表,如下所示:

@foreach (var item in Model.MyObjectList)
{
    @Html.Partial("DisplayObject", item)   
}
这在我的主视图下形成了一个网格模式,每个对象一行

我想用一种颜色的奇数行,另一种颜色的偶数行的普通方法给它们加条纹。(例如

通常你会通过做一些mod计算来做到这一点

问题是,如果不将项中的行号传递到部分视图中,我就不知道如何执行此操作

有没有更简单的方法?Html.Partial没有任何可以挂接的Html属性


当然,我可以在局部视图周围放置一个表,并以这种方式对其进行条带化,但我不希望这样做。

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

@foreach (var item in Model.MyObjectList) {
    <li class="odd|even">
    @Html.Partial("DisplayObject", item)  
    </li>  
}
@foreach(Model.MyObjectList中的变量项){
  • @Html.Partial(“DisplayObject”,item)
  • }
    如果您可以限制对CSS3的支持,您可以使用
    :第n个孩子(奇数)
    :第n个孩子(偶数)
    规则-如W3C的本页所示-

    这些示例显示了如何在
    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>
    
    
    第p分区:第n个子(奇数){颜色:红色;}
    divp:n子级(偶数){color:green;}
    首先

    第二

    第三


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


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

    通过
    ViewBag
    模式
    值从主视图传递到局部视图

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

    你能发布部分视图代码吗?你能发布呈现的html代码吗。现在我们有很多答案,基本上不相关了,但是谢谢!定义“所有浏览器”。你是否计划有一个?或者确实是一个IE8税?否则,你有IE9+和其他。我的意思是大多数浏览器都没有,不是吗?我正在认真考虑推荐这是给管理层的!