2012-06-26 52 views
1

一個局部視圖我認爲,我用的對象的列表的局部視圖從我的模型如下:着色在MVC 3

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

這形成了網格圖案向下我的主視圖中,1行對每個對象。

我想使用奇數行一種顏色的常規方法對它們進行條紋化,甚至是另一種行。 (如this例如,

通常你會做某種MOD計算的做到這一點。

的問題是我無法弄清楚如何做到這一點,而不經過連續數項進入局部視圖。

是否有更簡單的方法?Html.Partial沒有任何HTML屬性我可以掛接到。

當然我可以把一張桌子周圍的部分和條這樣的說法,但寧願不要。

+0

你能發表部分視圖代碼嗎? –

+0

你可以發佈呈現的html代碼嗎? –

+0

現在很大程度上無關緊要,因爲我們有很多答案,但謝謝! – ozz

回答

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> 
+0

這是適用於所有的瀏覽器? – VJAI

+0

定義「所有瀏覽器」。你打算有一個[IE7稅](http://www.bbc.co.uk/news/technology-18440979)?或者確實是一個IE8稅?否則,你有IE9 +和其他人。 [檢查Quirksmode](http://www.quirksmode.org/css/contents.html) –

+0

我的意思是大多數瀏覽器不*所有* – VJAI

1

我覺得你應該通過在傳遞到局部視圖模型中的信息或包裹的局部視圖中的元素和正確的CSS適用於它...像:

@foreach (var item in Model.MyObjectList) { 
    <li class="odd|even"> 
    @Html.Partial("DisplayObject", item) 
    </li> 
} 
0

將行號作爲屬性添加到定義每個「項目」的類的定義中。

在局部視圖中使用該屬性來確定它是奇數行還是偶數行。

0

Mode的值從ViewBag從主視圖傳遞給partial。

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

    @Html.Partial("DisplayObject", item) 
}