剃刀if / else在for循环中:for块缺少一个结束“}”字符

时间:2014-01-28 18:17:14

标签: asp.net-mvc asp.net-mvc-4 razor

我在MVC中使用Razor语法进行简单的for循环:

@for (int i = 0; i < Model.ProductViewModels.Count; i++)
{
    if (i%2 == 0)
    {
        <div class="row">
    }
        <div class="col-md-4">
      <a href="/product?id=@Model.ProductViewModels[i].Id">@Model.ProductViewModels[i].Title - @Model.ProductViewModels[i].Isbn13
                <br />
                <img src="@Model.ProductViewModels[i].ImageUrl" />
            </a>
</div>

@if (i%2 == 0)
    {
        </div>
    }
}

这似乎是我心目中的合法代码,但它不起作用!

我收到错误:

Meddelelse om parserfejl: The for block is missing a closing "}" character.  Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

错误的屏幕截图:

enter image description here

有什么想法吗? :)谢谢

5 个答案:

答案 0 :(得分:24)

这是一个可行的解决方案,我在Razor View上的Visual Studio中进行了测试。您必须正确使用 @:

  @for (int i = 0; i < Model.ProductViewModels.Count; i++)
  {            
       if (i % 2 == 0)
       {
           @:<div class="row">
       }

       <div class="col-md-4">
          <a href="/product?id=@Model.ProductViewModels[i].Id">@Model.ProductViewModels[i].Title - @Model.ProductViewModels[i].Isbn13
          <br />
          <img src="@Model.ProductViewModels[i].ImageUrl" />
          </a>
       </div>

       if (i % 2 == 0)
       {
            @:</div>
       }            
   }

答案 1 :(得分:3)

您需要使用文字标签

if (i%2 == 0)
{
    <text>
        <div class="row">
    </text>
}

此处是包含更多信息http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx

的链接

答案 2 :(得分:1)

尝试这种方式:

if (i%2 == 0)
{
    @:<div class="row">
}

或者:

if (i%2 == 0)
{
    <text>
        <div class="row">
    </text>
}

阅读此article

答案 3 :(得分:1)

此解决方案适用于我:

`

@foreach (var item in Model.listItems)
{
     if (item.isValid){
            @:<div class="validClass">
     }else{
            @:<div class="invalidClass">
     }
     @:</div>
}

`

您可以尝试其他解决方案:

<div class="@if(item.isValid){WriteLiteral("validClass");}" ></div>

答案 4 :(得分:0)

您在上面的行中缺少“}”(第8行,在启动您粘贴的代码之前)。你在这里粘贴的代码没有任何问题。