1

私のビューでは、次のように、モデルのオブジェクトのリストを含む部分ビューを使用します。

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

これにより、メインビューの下にグリッドパターンが形成され、オブジェクトごとに1行になります。

ある色の奇数行、別の色の偶数行の通常の方法を使用して、それらをストライプ化したいと思います。(たとえば、このように。

通常、これはある種のmod計算を行うことによって行います。

問題は、アイテムの行番号を部分ビューに渡さずにこれを行う方法を理解できないことです。

もっと簡単な方法はありますか?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

メインビューからパーシャルにMode値を渡します。ViewBag

@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 に答える