在剃刀foreach上获取索引值

我在我的视图中的razorforeach循环遍历List<T> ,呈现一个部分。 在部分我正在渲染一个单一的logging,我想在我的视图中连续4。 我有一个css类的两个结束列,所以需要在部分确定该调用是否是第1或第4条logging。 什么是在我的部分识别这个最好的方式输出正确的代码?

这是我的主页,其中包含循环:

 @foreach (var myItem in Model.Members){ //if i = 1 <div class="grid_20"> <!-- Start Row --> //is there someway to get in for i = 1 to 4 and pass to partial? @Html.Partial("nameOfPartial", Model) //if i = 4 then output below and reset i to 1 <div class="clear"></div> <!-- End Row --> </div> } 

我想我可以创build一个int,我可以更新每个过程,并呈现文本没有问题,但它是通过整数值到我偏我更关心。 除非有更好的方法。

这是我的部分:

 @{ switch() case 1: <text> <div class="grid_4 alpha"> </text> break; case 4: <text> <div class="grid_4 omega"> </text> break; default: <text> <div class="grid_4"> </text> break; } <img src="Content/960-grid/spacer.gif" style="width:130px; height:160px; background-color:#fff; border:10px solid #d3d3d3;" /> <p><a href="member-card.html">@Model.Name</a><br/> @Model.Job<br/> @Model.Location</p> </div> 

不知道今天是否有一个金发的日子,这是非常容易的,但我不能想到传递int值的最佳方法。希望有人可以帮助。

  @{int i = 0;} @foreach(var myItem in Model.Members) { <span>@i</span> i++; } 
 //this gets you both the item (myItem.value) and its index (myItem.i) @foreach (var myItem in Model.Members.Select((value,i) => new {i, value})) { <li>The index is @myItem.i and a value is @myItem.value.Name</li> } 

更多信息在我的博客文章http://jimfrenette.com/2012/11/razor-foreach-loop-with-index/

看看这个使用Linq的解决scheme。 他的例子是类似的,他需要不同的标记每个第三项。

 foreach( var myItem in Model.Members.Select(x,i) => new {Member = x, Index = i){ ... } 

是否有一个原因,你不使用CSSselect器样式的第一个和最后一个元素,而不是试图附加一个自定义类到他们? 而不是基于阿尔法或欧米茄的造型,使用第一个孩子和最后一个孩子。

http://www.quirksmode.org/css/firstchild.html

或者你可以简单地这样做:

 @foreach(var myItem in Model.Members) { <span>@Model.Members.IndexOf(myItem)</span> } 

IndexOf在这里似乎很有用。

 @foreach (myItemClass ts in Model.ItemList.Where(x => x.Type == "something")) { int currentIndex = Model.ItemList.IndexOf(ts); @Html.HiddenFor(x=>Model.ItemList[currentIndex].Type) 

很简单:

  @{ int i = 0; foreach (var item in Model) { <tr> <td>@(i = i + 1)</td>` </tr> } }`