#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/…