0

如何将当前元素的索引传递给 DisplayFor/EditorFor 的视图,以便我可以决定该行是否应显示替代样式?

我的主视图如下所示:

<table>
@Html.EditorFor(model => model.MyListOfItems)
</table>

用于 EditorFor 的视图如下所示:

@Html.HiddenFor(model => model.IdOfTheItem)
<tr class="shouldBeChangedDependingOnRowEvenOrNot">
<td>@Html.CheckBoxFor(model => model.MarkForBatchEdit)</td>
<td>@Html.DisplayFor(model => model.NameOfThisItem)</td>
<td>@Html.DisplayFor(model => model.StateOfThisItem)</td>
</tr>

好吧,我知道这个类似的问题和建议的解决方案:alternating row color MVC

但我不能将它们应用于这种情况。

有什么建议么?

4

1 回答 1

1

EditorFor重载以获取附加的ViewData 参数,因此您可以在ViewData中传递索引,这是键/值对的集合。

@Html.EditorFor( model => model.MyListOfItems , new { CurrentIndex = SomeNumber } )

在您看来,您将使用ViewData["CurrentIndex"].

此外,与其传递元素索引,不如在控制器中进行计算并传递ViewData.

bool isEvenRow = ((CurrentElementIndex % 2) == 0);
ViewData["isEvenRow"] = isEvenRow;

然后,您将根据值是 true 还是 false 在视图中切换 CSS。

于 2012-10-29T05:45:27.977 回答