给定一个动态网格模型,通过razor生成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">
}
这会导致分析程序错误分析程序错误消息:foreach数据块缺少关闭&#34;}&#34;字符。确保你有匹配的&#34;}&#34;所有&#34; {&#34;这个区块内的字符,并没有&#34;}&#34;字符被解释为标记。
此解析器错误为false,因为注释掉不合适的html或将其插入原始块会消除错误。原始块是解决此问题的唯一方法吗?
答案 0 :(得分:3)
您应该能够使用@:为代码块中的单行或&lt; text&gt;输出文本。多行标记
// 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)