ASP中cshtml文件解析错误.净MVC4

本文关键字:错误 MVC4 cshtml 文件 ASP | 更新日期: 2023-09-27 18:16:12

在视图中,我试图在一行中最多显示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>

谢谢。

ASP中cshtml文件解析错误.净MVC4

尝试将其添加到相关行

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

因为你把它包装在一个HTML标签元素中,Razor不能确定if中的内容是内容块的开始。通过使用@:,我们表明语句的内容应被视为内容。

您的第一个<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>