【问题标题】:Condinational razor brackets does not add up according to Visual Studio根据 Visual Studio,条件剃须刀括号不加起来
【发布时间】:2014-09-08 01:35:13
【问题描述】:

我有一个 Razor 视图,我使用 Bootstrap 作为我的设计/前端基线。现在我想创建一个典型的 row/col-sm-6,然后每隔一个 item 创建一个新行。

但是,当我在下面做以下标记时,我得到一个:

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

【问题讨论】:

  • 错误是正确的,你有1个额外的}。看起来倒数第二个是您应该删除的。
  • 不,错误根本不正确。这是损坏的 Razor 解析器。

标签: c# asp.net-mvc razor asp.net-mvc-5


【解决方案1】:

损坏的 Razor 解析器是这个问题的根源。它无法知道您的开头div 有一个相应的结尾div,因为它们包含在if 运行时评估的语句中。如果由于某种原因,开头的 if 语句评估为 true,而结尾的评估结果为 false,那么您最终会得到一个损坏的标记。但是在您的情况下,您知道这不可能发生,因为它们具有相同的条件。

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

这里:

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

【讨论】:

  • 你,先生,太棒了。谢谢!
  • @DarinDmitrov:是真的“破”还是“太保守”了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-12
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多