2015-01-27 3 views
0

Нужна вашего рода помощь по синтаксису бритвы ниже, как это бросает ошибку ...Multiple если синтаксис бритвы

  <div class="container"> 
         @{var i = 0;} 
         @foreach (var m in Tests) 
         { 
          if (i%3==0) 
          { 
           <div class="row"> 
          } 

          <div class="col-md-3">ass</div> 

          @if (i % 3 == 1) 
          { 
           </div> 
          } 
          @{i++;} 
         } 

       </div> 

с помощью блока отсутствует закрывающий знак «}». Убедитесь, что у есть соответствующий символ «}» для всех символов «{» в этом блоке и что ни один из символов «}» не интерпретируется как разметка .

Затем я попробовал ...

   <div class="container"> 
         @{ 
          var i = 0; 
          foreach (var m in Tests) 
          { 
           if (i%3==0) 
           { 
            <div class="row"> 
           } 

           <div class="col-md-3">ass</div> 

           if (i % 3 == 1) 
           { 
            </div> 
           } 
           i++; 
          } 
         } 

, но это дает мне ...

ass }if (i % 3 == 1) { 
ass }if (i % 3 == 1) { 
ass }if (i % 3 == 1) { 

Я ценю помощь, чтобы исправить мой код ...

+1

похоже, что перед '' '' '' '' '' 'должно быть' @ ' – mrtig

+0

@mrtig: Нет. Он находится на верхнем уровне кода ('foreach') и не обернут тегами HTML. В результате, Razor фактически задохнется, если вы префикс его с помощью '@'. Хотя, я всегда находил, что это смешно, как будто Razor знает достаточно, что он может сказать мне, что я поставил '@' там, где он не был нужен, он должен был бы просто молча игнорировать его. –

ответ

4

Бритва не может должным образом сопоставлять открывающие и закрывающие теги, если они находятся в отдельных блоках кода, и в результате не удается правильно разобрать представление. Если вам нужно сделать что-то вроде этого вам необходимо либо префикс тегов с @: сказать Razor игнорировать разборе тегов для этой строки или завернуть их в @Html.Raw:

Например:

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

Или:

if (i % 3==0) 
{ 
    @Html.Raw("<div class='row'>") 
} 
0

Вы должны удалить @ из этого @if (i % 3 == 1) и этого @{i++;}. Оба выражения уже находятся в кодовом блоке: @foreach (var m in Tests). Следовательно, вам это не нужно @.

Смежные вопросы