根据Visual Studio的说法,Condinational剃须刀支架不会相加
本文关键字:剃须刀 Condinational Studio Visual 根据 | 更新日期: 2023-09-27 18:20:54
我有一个Razor视图,在那里我使用Bootstrap作为我的设计/前端基线。现在我想创建一个典型的行/col-sm-6,然后为每秒钟的项目创建一个新行。
然而,当我在下面做以下标记时,我会得到一个:
Additional information: The if block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
我只是不明白为什么会出现这个错误。如果您在下面看到我的标记,则有正确的{
和}
,它们应该加起来。
知道我为什么会出错吗?
@{ int index = 0; }
@if (Model != null && Model.Items != null)
{
<div class="projects">
@foreach (var project in Model.Items)
{
if (index % 2 == 0)
{
<div class="row">
}
<div class="col-sm-6 project">
@if (!string.IsNullOrEmpty(project.Image))
{
<img src="@project.Image" />
}
<div class="project_title">@project.Title</div>
@if (project.UserSnippet != null)
{
<img src="@project.UserSnippet.ProfilePic" class="post_image" />
@Html.Partial("_UserSnippet", project.UserSnippet)
}
@if (!string.IsNullOrEmpty(project.DescriptionSnippet))
{
<p class="project_description">@project.DescriptionSnippet</p>
}
<a href="/p/@project.Alias">Read more about project</a> @if (Model.ShowEditLink)
{
<a href="@Url.Action("EditProject", "Project", new { project_id = project.Id})">Edit project</a>
}
</div>
@if (index%2 == 0)
{
</div>
}
}
</div>
}
坏掉的Razor解析器是这个问题的根源。它无法知道打开的div
具有相应的关闭div
,因为它们被封装在运行时评估的if
语句中。如果由于某种原因,打开的if语句的计算结果为true,而关闭的语句的计算值为false,那么您最终将得到一个损坏的标记。但在你的情况下,你知道这不可能发生,因为他们有同样的情况。
if (index % 2 == 0)
{
@:<div class="row">
}
这里:
@if (index % 2 == 0)
{
@:</div>
}