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>

私はこの同様の質問と提案された解決策を知っています:交互の行の色MVC

しかし、私はそれらをこの場合に適用することはできません。

助言がありますか?

4

1 に答える 1

1

EditorForオーバーロードされてadditionalViewDataパラメータを取得するため、キーと値のペアのコレクションである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 に答える