Razor, генерирующий рваный html, он требует Html.Raw?
Учитывая динамическую сеточную модель, генерирующую HTML через бритву, похожую на:
@{ int blockCounter = 0;}
@foreach (var item in Model.Items)
{
if (blockCounter++ % 3 == 0)
{
//ragged html open here, when needed
}
<div>..... </div>
if (blockCounter % 3 == 0)
{
//ragged html close, when needed
}
}
Есть ли альтернатива
if (blockCounter++ % 3 == 0)
{
@Html.Raw(@"<div class=""row"">")
}
Если используется следующий код:
if (blockCounter++ % 3 == 0)
{
<div class="row">
}
Это приводит к сообщению об ошибке Parser Error Parser: в блоке foreach отсутствует закрывающий символ "}". Убедитесь, что у вас есть соответствующий символ "}" для всех символов "{" в этом блоке, и что ни один из символов "}" не интерпретируется как разметка.
Эта ошибка синтаксического анализатора является ложной, поскольку комментирование разорванного HTML или вставка его в необработанный блок устраняет ошибку. Является ли необработанный блок единственным решением?
1 ответ
Вы должны иметь возможность использовать @: для вывода текста для отдельных строк в блоке кода или тега
// single line
if (blockCounter++ % 3 == 0)
{
@:<div class="row">
}
// multiline
if (blockCounter++ % 3 == 0)
{
<text>
<div class="row">
<span>more output</span>
</text>
}
Дополнительные ссылки на синтаксис можно найти здесь... http://www.asp.net/web-pages/overview/getting-started/introducing-razor-syntax-(c)