剃刀语法内联代码

问题描述:

我想要做的是,有一个包含图标集的div,但我想每行5个图标做一个行。所以我写了这样的东西。剃刀语法内联代码

<div id="icons-list1" class="icons-list"> 
    @{ int catCount = 0; } 
    @foreach (var catItem in Model.Categories) 
    { 
     if (catCount == 0) 
     { 
      <div class="icons-list-row"> 
     } 
     <label title="@catItem.Name" data-selected-color="#@catItem.ColorCode" data-position="n" class="icon static big tooltip" original-title="Tooltip Title"> 
      <img alt="@catItem.Name" src="@Url.Content(@BonubonUrlHelper.CategoryImages + "dark/music.png")"> 
      <input name="categories" value="@catItem.Id" type="checkbox" /> 
     </label> 
     catCount++; 
     @if (catCount == 5) 
     { 
      </div> 
      catCount = 0; 
     } 
    } 
</div> 

但我得到一个错误,说foreach语句没有结束块。我尝试了一切,但我无法设法使其工作。我做错了什么?我对剃刀语法很陌生。

感谢

确保你逃脱HTML语句时,这类问题出现。

在你的情况,但是,实际的问题是与第二if语句之前@转义字符,这是没有必要:

<div id="icons-list1" class="icons-list"> 
    @{ int catCount = 0; } 
    @foreach (var catItem in Model.Categories) 
    { 
     if (catCount == 0) 
     { 
      @:<div class="icons-list-row"> 
     } 
     <label title="@catItem.Name" data-selected-color="#@catItem.ColorCode" data-position="n" class="icon static big tooltip" original-title="Tooltip Title"> 
      <img alt="@catItem.Name" src="@Url.Content(@BonubonUrlHelper.CategoryImages + "dark/music.png")"> 
      <input name="categories" value="@catItem.Id" type="checkbox" /> 
     </label> 
     catCount++; 
     if (catCount == 5) 
     { 
      @:</div> 
      catCount = 0; 
     } 
    } 
</div> 

的问题是,你已经逃脱行if

@if (catCount == 5) 

当你写的东西,如@foreach {,你不必再逃避C#代码行就启动了一个代码块。

只需在if前删除@,并且错误消失。