如果在MVC5中启动元素被破坏?

时间:2015-02-11 17:45:35

标签: asp.net-mvc asp.net-mvc-5

做一些简单的事情:

<table>
    <body>
      @foreach (PlayerBanModel ban in Model.Bans)
      {
         if (ban.Active)
         {
           <tr style="background: yellow">
         }
         else
         {
            <tr style="background: lightgrey">
         }


       <td>@ban.Active </td>
       </tr>
       }
  </table>

我遗漏了所有其他字段和标题行。

引发错误,因为它是&#34; foreach块缺少关闭&#34;}&#34;字符。 &#34;

当然,它不是,但是它看到了两个tr - 每个条件中有一个,并且(显然)没有意识到其中只有一个会被渲染,它希望我在}

之前关闭

我尝试添加:

             if (false)
             {
             </tr>
             }

但它显然足够聪明,可以删除它。

我试图把它放在有条件的地方:

<tr style="background: @{return (ban.Active?"white":"lightgrey"}>

和各种类似的尝试。 我或许可以把它放在自己的部分中,但我希望它也不会起作用。

建议?

我正在使用MVC5

1 个答案:

答案 0 :(得分:2)

您的条件格式不正确。使用显式代码块时,只需将条件语句用括号括起来,而不是括号,而不需要返回语句。

<tr style="background: @(ban.Active ? "white" : "lightgrey")">

对于原始代码,解析器将一些标记解释为代码,因为它位于if语句中。您可以使用@:将这些行标记为特定文本,但是更容易执行内联条件。

<table>
  <tbody>
    @foreach (PlayerBanModel ban in Model.Bans) {
      if (ban.Active) {
        @:<tr style="background: yellow">
      }
      else {
        @:<tr style="background: lightgrey">
      }
      <td>@ban.Active </td>
      @:</tr>
    }
  </tbody>
</table>