在视图中,我试图连续显示最多5张图像。
我们的想法是通过使用</tr><tr>
html标签来关闭当前行并启动一个新行来引入一个新行,如下所示,但这会产生一个Parser错误。
分析器错误消息:代码块缺少结束“}” 字符。确保所有人都有匹配的“}”字符 “{”此块中的字符,并且没有“}”字符 被解释为标记。
我该如何纠正?
<table>
<tr>
@{
int indx = 0;
foreach(var item in Model) {
indx++;
<td>
<a href ="@Url.Action("ShowPic", "ViewPhotos", new { id = item.ID })">
<img src="@String.Format("data:image/jpg;base64,{0}", Convert.ToBase64String(item.Image))" />
</a>
<br />
@Html.DisplayFor(modelItem => item.Caption)
</td>
if(indx%5==0) {
</tr><tr><!--Error here-->
}
}
}
</tr>
</table>
感谢。
答案 0 :(得分:3)
尝试将此添加到相关行
@: </tr><tr><!--Error here-->
由于您将其包装在HTML标记元素中,因此Razor无法确定if
中的内容是内容块的开头。通过使用@:
,我们指出语句的内容应该被视为内容。
答案 1 :(得分:0)
您的第一个<tr>
和最后一个</tr>
超出了其开始/结束标记的范围:
<table>
@{
<tr>
int indx = 0; foreach (var item in Model) { indx++;
<td>
<a href ="@Url.Action("ShowPic", "ViewPhotos", new { id = item.ID })">
<img src="@String.Format("data:image/jpg;base64,{0}", Convert.ToBase64String(item.Image))" />
</a>
<br />
@Html.DisplayFor(modelItem => item.Caption)
</td>
if(indx%5==0) {
</tr>
<tr>
} }
</tr>
}
</table>