2011-03-17 65 views
11

我使用MVC 3 Razor视图引擎,我试图使偶数行和奇数行在表中有不同的类。偶数和奇数表格行与剃刀

到目前为止,我已经有了这个

@{ var odd = true; } 
@foreach(var userLot in Model) { 
    if (!odd) { 
     <tr id="[email protected]" class="even"> 
    else 
     <tr id="[email protected]" class="odd"> 
    }  
      <td>@userLot.Id</td> 
      <td>@userLot.Description</td> 
      <td>@userLot.Carat</td> 
      <td class="averageBid">@userLot.AverageBid</td> 
      <td class="rank">@userLot.Rank</td> 
      <td class="currentBid">@userLot.CurrentBid</td> 
      <td style="width: 200px; height: 30px;" class="tdWithBidInput"><input type="text" style="display: none" /></td> 
     </tr> 
    @{ odd = !odd; } 
} 

这让我无法弄清楚什么是标记的,什么是代码愚蠢的视图引擎无尽的烦恼。我已经尝试在文本指令中包装tr开放标签,但随后愚蠢的视图引擎呻吟了关闭tr标签。如果我然后将close tr标签包装在文本指令中,那么愚蠢的视图引擎会呻吟文本指令没有开始标签。

只是要清楚,这

<text></ tr></text> 

给出了一个错误,该文本标签没有与之匹配的标签。可爱。

我该如何写这个让Razor不会给出错误?

请不要推荐JavaScript解决方案,我试图在这里解决Razor问题。

+1

另请参阅http://stackoverflow.com/questions/4929538/c-sharp-mvc3-razor-alternating-items-in-a-foreach-list – 2012-08-20 18:38:16

回答

26

如何:

@{ var odd = true; } 
@foreach(var userLot in Model) { 
    <tr id="[email protected](userLot.Id)" class="@(odd ? "odd": "even")"> 
     <td>@userLot.Id</td> 
     <td>@userLot.Description</td> 
     <td>@userLot.Carat</td> 
     <td class="averageBid">@userLot.AverageBid</td> 
     <td class="rank">@userLot.Rank</td> 
     <td class="currentBid">@userLot.CurrentBid</td> 
     <td style="width: 200px; height: 30px;" class="tdWithBidInput"><input type="text" style="display: none" /></td> 
    </tr> 
    odd = !odd; 
} 

@(...)是一个有效的和非常有用的声明。

+0

嗯....这解决了第一个问题,但现在它呻吟在@ {odd =!odd; } - 我得到的错误是方法没有超载'写'需要0个参数 – 2011-03-17 08:50:28

+2

当你在代码中时,你不需要'@ {..}'“,这有时会令人困惑。 – 2011-03-17 08:53:35

+0

heh好像我们在同一时间编辑 – 2011-03-17 08:54:14