c# foreach Динамически генерируемая HTML-таблица

@{ int count = 0;}
@if (Model != null)
{
    <table style="width:100%" border="1">                        
    @foreach (var item in Model)
    {
       @if (count == 0)
       {
           <tr>
       }
       <td style="width:25%">
           <table>
               <tr><td>@Html.DisplayFor(model => item.Item_Title)</td></tr>
               <tr><td>@Html.DisplayFor(model => item.Item_Content)</td></tr>
               <tr><td>@Html.DisplayFor(model => item.Item_Author)</td></tr>
           </table>
       </td>

       @if (count == 3)
       {
           </tr>
       }

       @if (count == 3)
       { count = 0; }
       else (count != 3)
       { count++; }
    }
    </table>
}

Как следует из названия,

Я пытался использовать FOREACH для динамического создания таблиц в HTML.

Но возникла проблема.

Моя логика заключается в динамическом создании таблицы 4 * N.

Но код на красном поле распознается программой как текст.

Заставляет программу в красном поле не работать.

Как я могу это исправить?


Добавлено @ после вхождения

Он обнаружил, что нет конца

Заставляет следующее стать текстом

Наконец выскочить не существует }


person 肯得機    schedule 24.02.2019    source источник
comment
Вы пытались поставить символ @ перед оператором if? то есть @if (количество == 3)   -  person wazdev    schedule 24.02.2019
comment
Вы должны отредактировать свой вопрос и разместить свой код там, а не на изображении.   -  person Second2None    schedule 24.02.2019
comment
Привет, добро пожаловать в Stackoverflow! Пожалуйста, разместите свой код здесь, а не в каком-либо другом внешнем источнике. Для вашей проблемы - вам не хватает пробела после if (count) -> if (count)   -  person Ziv Weissman    schedule 24.02.2019
comment
@wazdev Я добавил if перед @, но это привело к тому, что самое внешнее if (Model != null) не найдено}   -  person 肯得機    schedule 24.02.2019


Ответы (2)


ОК, похоже, это удалось скомпилировать, когда я поместил вывод условий If в Html.Raw :

@{ int count = 0;}
@if (Model != null)
{
    <table style="width:100%" border="1">                        
    @foreach (var item in Model)
    {
        if (count == 0)
        {
            @Html.Raw("<tr>")
        }

        <td style="width:25%">
           <table>
               <tr><td>@Html.DisplayFor(model => item.Item_Title)</td></tr>
               <tr><td>@Html.DisplayFor(model => item.Item_Content)</td></tr>
               <tr><td>@Html.DisplayFor(model => item.Item_Author)</td></tr>
           </table>
       </td>

       if (count == 3)
       {
           @Html.Raw("</tr>")
       }

       if (count == 3)
       { count = 0; }
       else if (count != 3)
       { count++; }
    }
</table>}
person Doug F    schedule 24.02.2019
comment
Я добавил if перед @, но это вызвало самое внешнее if (Model != null) not found} Код, который я изменил, был обновлен до приведенного выше. Или моя позиция неверна? - person 肯得機; 24.02.2019
comment
Я немного переделал ответ. Проверьте это и посмотрите, работает ли это для вас. - person Doug F; 24.02.2019
comment
Спасибо ~ Это может работать успешно。Я также нашел другой способ использования @:‹tr› с тем же эффектом - person 肯得機; 24.02.2019

Всем спасибо за решение проблемы.

Пересмотренная программа выглядит следующим образом

@{целое количество = 0;}

@if(Model != null)
{
    <table style="width:100%" border="1">                        
    @foreach (var item in Model)
    {
        if(count == 0)
        {                                
            @:<tr>
        }
        <td style="width:25%">
            <table>
                <tr><td>@Html.DisplayFor(model => item.Item_Title)</td></tr>
                <tr><td>@Html.DisplayFor(model => item.Item_Content)</td></tr>
                <tr><td>@Html.DisplayFor(model => item.Item_Author)</td></tr>
            </table>
        </td>
        if(count == 3)
        {
            @:</tr>
        }

        if(count == 3)
        { count = 0; }
        else
        { count++; }
    }
    </table>
}
</td>
person 肯得機    schedule 24.02.2019