根据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>
}

根据Visual Studio的说法,Condinational剃须刀支架不会相加

坏掉的Razor解析器是这个问题的根源。它无法知道打开的div具有相应的关闭div,因为它们被封装在运行时评估的if语句中。如果由于某种原因,打开的if语句的计算结果为true,而关闭的语句的计算值为false,那么您最终将得到一个损坏的标记。但在你的情况下,你知道这不可能发生,因为他们有同样的情况。

if (index % 2 == 0)
{
    @:<div class="row">
}

这里:

 @if (index % 2 == 0)
 {
     @:</div>
 }