2014-11-04 31 views
0

在我看來,我試圖設置一個索引,以便我可以將表中的每一行標記爲偶數或奇數。我做了很多搜索並找到了解決方案,但是我發現的解決方案是當模型是IEnumerable但我的PagedList.IPagedList。MVC5 View:在模型中循環時設置並獲取索引

Link to the other solution I found

@foreach (var item in Model.Select((x, i) => new { Data = x, Index = i })) 
{ 
    <tr @if ((item.index) % 2 == 0){ <text> class=」even」 </text> } else {<text> class=」odd」 </text>}> 

     <td>@Html.DisplayFor(modelItem => item.thing)</td> 
     <td>@Html.DisplayFor(modelItem => item.thing2)</td> 
     <td>@Html.DisplayFor(modelItem => item.thing3)</td> 
    </tr> 
} 

我得到的edditor此錯誤:

如果不首先它強制轉換爲委託或表達式樹類型使用lambda表達式作爲參數傳遞給動態調度操作。

和這個錯誤,如果我運行它:

「AnonymousType#1」不包含「索引」和沒有擴展方法「索引」接受類型爲「AnonymousType#1」的第一個參數的定義可能是發現(您是否缺少使用指令或裝配參考?)

任何想法?或者我可以不使用PagedList.IPagedList模型做到這一點?

編輯: 修復了一件事將每個索引中的「索引」重命名爲「索引」仍然在編輯器錯誤中得到相同結果。而運行錯誤是說,所有的這些:

@ Html.DisplayFor(modelItem => item.thing)

必要過於改變

@ Html.DisplayFor(modelItem => item.data .thing)

後,此時它運行,但我沒有得到類=「甚至或類‘中的標籤奇’。

是否有可能這樣做的一個更簡單的方式整體?

+1

以及您的匿名類型屬性'Index'和你正在尋找'index'。我將開始修復 – Jonesopolis 2014-11-04 14:47:24

+0

您正在爲匿名類型設置一個名爲'Index'的屬性,並嘗試使用'index'來訪問它。 – 2014-11-04 14:48:24

+0

修正了索引索引的問題。現在它看起來像我必須更改​​@ Html.DisplayFor(modelItem => item.thing)此​​@ Html.DisplayFor(modelItem => item.data.thing)有沒有一種更簡單的方法來獲取索引這個情況? – JasonBluefire 2014-11-04 14:54:22

回答

3

首先,你拼寫爲item.index,沒有資本I。這解釋了你看到的錯誤。

這就是說,你應該真的使用而不是foreach,而不僅僅是因爲你需要一個索引。 MVC中的表達式爲DisplayFor(modelItem => item.thing)假設lambda的右側取決於左側,如果情況並非如此,則可能會遇到問題。

因爲這一切,我認爲你需要一個for循環。幸運的是IPagedList實現IList<T>,所以這不是什麼大不了的事:

@for (int i = 0; i < Model.Count(); i++) 
{ 
    <tr @if (i % 2 == 0){ <text> class=」even」 </text> } else {<text> class=」odd」 </text>}> 

     <td>@Html.DisplayFor(model => model[i].thing)</td> 
     <td>@Html.DisplayFor(model => model[i].thing2)</td> 
     <td>@Html.DisplayFor(model => model[i].thing3)</td> 
    </tr> 
} 
+0

完美的作品,謝謝:) – JasonBluefire 2014-11-04 15:10:26