В блоке foreach отсутствует закрывающий символ «}» - при попытке обернуть элементы в строки

1

Изображения, отображаемые здесь, имеют разные размеры - поэтому каждый набор из 3 элементов должен быть обернут в <div class="row"></div>, чтобы не допустить, чтобы вещи стали беспорядочными. Но я продолжаю получать эту ошибку:

Server Error in '/' Application.

Parser Error

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: The foreach 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.

Как я могу отформатировать это так, чтобы он не искажал Razor?

<div class="row">

     @foreach (var row in Model.Select((item, index) => new { index, item }))
     {
         if (row.index != 0 && row.index % 3 == 0)
         {
            </div><div class="row">
         }

        <div class="col-sm-4 mix @String.Format(@"category-{0}", row.item.Category.ToString())" data-price="64900" data-date="20130521" data-popularity="3">
            <div class="ec-box">
                <div class="ec-box-header"><a href="#">@row.item.Name</a></div>
                <a href="#"><img src="@row.item.Image.URL" alt=""></a>
                <div class="ec-box-footer">
                    <a href="@Url.Action("Details")" class="btn btn-ar btn-success btn-sm pull-right"><i class="fa fa-search"></i> More info</a>
                </div>
            </div>
        </div>
     }
</div>
  • 0
    Я не верю, что вы можете условно закрыть теги ...
  • 0
    @AlexeiLevenkov Я думаю, что вы правы. Есть идеи для лучшего подхода?
Показать ещё 1 комментарий
Теги:
razor
asp.net-mvc

3 ответа

0

Похоже, вы @foreach бритву с тем, как вы кладете блок @foreach. Попробуйте изменить код на следующий

@foreach (var row in Model.Select((item, index) => new { index, item }))
{
    if (row.index == 0 || row.index % 3 == 0)
    {
        <div class="row">
    }

    <div class="col-sm-4 mix @String.Format(@"category-{0}", row.item.Category.ToString())" data-price="64900" data-date="20130521" data-popularity="3">
        <div class="ec-box">
            <div class="ec-box-header"><a href="#">@row.item.Name</a></div>
            <a href="#"><img src="@row.item.Image.URL" alt=""></a>
            <div class="ec-box-footer">
                <a href="@Url.Action("Details")" class="btn btn-ar btn-success btn-sm pull-right"><i class="fa fa-search"></i> More info</a>
            </div>
        </div>
    </div>

    if (row.index % 3 == 2 || row.index == Model.Count - 1)
    {
        </div>
    }
}
0

Вы расстраиваетесь из анализатора с этим

@String.Format(@"category-{0}", row.item.Category.ToString())

Почему нет?

@("category-" + row.item.Category.ToString())

Обратите внимание на использование фигурных скобок {0} в вашем заявлении.

  • 0
    Внес изменения - но я все еще получаю ту же ошибку. Есть еще идеи? Из-за того, что это стоит, кажется, злится на утверждение if.
-1

Вы забыли @ в инструкции if.

@if (row.index != 0 && row.index % 3 == 0)
  • 0
    Все еще сталкиваюсь с той же ошибкой, даже с @.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню