Динамическое создание таблицы в цикле / представление MVC для каждого

#asp.net-mvc

Вопрос:

Прямо сейчас я пишу очень плохой код, и еще до того, как я его сохраню, я надеялся получить какой-то вклад в его улучшение. Я пытаюсь построить таблицу html с тремя ячейками в каждой строке. Если в коллекции 5 элементов, то они должны отображаться в виде двух строк.

Код, который я написал до сих пор, как я вижу, не очень надежен и потребует постоянного обслуживания, но я не уверен в других инструментах / методах для выполнения этой задачи.

 <table>
    @foreach (VideosModel item in Model)
    {
        if (cellCount == 0 || cellCount == 3)
        { 
            @Html.Raw("<tr>") 
        }
           <td style="padding:0px 20px;">
                @item.VideoTitle <br />
                <a href="@item.VideoUrl" target="_blank">
                    <img src="../../.../Video.jpg" /> <br />
                </a>
                @item.VideoDescription
                <br />
            </td>

        cellCount  ;

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

        if (cellCount > 3) { cellCount = 0; }
    }
</table>
 

Комментарии:

1. Для начала, нет необходимости в том, чтобы пакет был <tr> завернут в @Html.Raw()

2. Когда у меня нет его в необработанном виде, я получаю ошибку, что если затем закрывающая скобка не найдена. Такие, как описано здесь: forums.asp.net/t/1654550.aspx

Ответ №1:

Вам следует рассмотреть возможность использования по модулю вместо сравнения значений cellCount с 0, 3 или 6:

 <table>
    @foreach (VideosModel item in Model)
    {
        if (cellCount % 3 == 0)
        { 
            @:<tr>
        }
           <td style="padding:0px 20px;">
                @item.VideoTitle <br />
                <a href="@item.VideoUrl" target="_blank">
                    <img src="../../.../Video.jpg" />
                </a><br />
                @item.VideoDescription
                <br />
            </td>

        cellCount  ;

        if (cellCount % 3 == 0)
        { 
            @:</tr>
        }
    }
</table>
 

Комментарии:

1. Является ли @: сокращением для чего-то? Я не знал об этом, и поиск в Google @: или MVC @: возвращает nada.

2.То же самое, что <text><tr></text> weblogs.asp.net/scottgu/archive/2010/12/15/…