1

在视图中,我试图连续显示最多 5 张图像。这个想法是通过使用 html 标签来关闭当前行并开始一个新行来引入一个新行,</tr><tr>如下所示,但这会产生 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>

谢谢。

4

2 回答 2

3

尝试将此添加到有问题的行

@: </tr><tr><!--Error here-->

因为您将其包装在 HTML 标记元素中,所以 Razor 无法确定其中的内容if是内容块的开头。通过使用@:,我们表明该语句的内容应被视为内容。

于 2013-05-31T14:20:14.120 回答
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>
于 2013-05-31T14:22:51.717 回答