【问题标题】:Even and odd table rows with Razor使用 Razor 的偶数和奇数表行
【发布时间】:2011-03-17 08:37:36
【问题描述】:

我正在使用带有 MVC 3 的 Razor 视图引擎,并且我正在尝试使表中的偶数行和奇数行具有不同的类。

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

@{ var odd = true; }
@foreach(var userLot in Model) {
    if (!odd) {
        <tr id="lot@userLot.Id" class="even">
    else
        <tr id="lot@userLot.Id" 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 标签。如果我然后将结束 tr 标记包装在文本指令中,愚蠢的视图引擎会抱怨文本指令没有开始标记。

要明确一点,这个

<text></ tr></text>

给出文本标签没有匹配的开始标签的错误。可爱。

如何编写这样 Razor 不会出错?

请不要推荐 JavaScript 解决方案,我正在尝试解决 Razor 问题。

【问题讨论】:

标签: asp.net-mvc-3 razor


【解决方案1】:

这个怎么样:

@{ var odd = true; }
@foreach(var userLot in Model) {
   <tr id="lot@(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;
}

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

【讨论】:

  • 嗯....这解决了第一个问题,但现在它正在抱怨@{ odd = !odd; 的最后一点。 } - 我得到的错误是“写入”方法没有重载需要 0 个参数
  • 你不需要@{ .. }“一旦你在代码中”,这有时会让人很困惑。
  • 在我所做的编辑中,我还更改了设置行 ID 的位 - 您需要将代码语句放在括号中 - @(userLot.Id.ToString()) 否则它呈现为文字。
  • 我现在已经更正了。不过你不需要使用.ToString()
猜你喜欢
  • 2012-06-06
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
相关资源
最近更新 更多