解析错误,错过了结束“}”

时间:2013-11-18 18:56:39

标签: asp.net-mvc

我花了45分钟寻找失踪的关闭“}”,我找不到它。我重写了代码,我仍然得到这个错误。我做错了什么?

分析程序错误消息: foreach块缺少结束“}”字符。确保此块中的所有“{”字符都有匹配的“}”字符,并且没有任何“}”字符被解释为标记。

第9行:@foreach(模型中的var项目){

@foreach (var item in Model) {
  int checkId = item.Id;
  if (item.ReplyId == checkId){
    <div>
      <h4>Forum</h4>
      <hr />
      <div class="panel panel-default">

      <div class="panel-heading">
      @Html.DisplayFor(modelItem => item.Title)
      </div>
      <div class="panel-body">
      @Html.DisplayFor(modelItem => item.Body)
      </div>
      </div>
  }
}
@foreach(var item2 in Model)
{
  if(item2.ReplyId == checkId){
    <div class="panel panel-default">
      </div>
      <div class="panel-body">
      @Html.DisplayFor(modelItem => item2.Body)

      </div>
      </div>
  }
}

<p>
@if (Request.IsAuthenticated)
{
  string user = item.User;
  if (User.Identity.Name == user)
  {
    <p>@Html.ActionLink("Edit", "Edit", new { id = checkId }) |</p>
      <p>@Html.ActionLink("Reply", "Reply", new { id = checkId }) |</p>

  }
  @Html.ActionLink("Back to List", "Index")
}

3 个答案:

答案 0 :(得分:2)

您必须在@ {}括号中包含长闭包。我相信这是你的问题:

@if (Request.IsAuthenticated) { 
    //... 
}

尝试:

@{ 
    if(Request.IsAuthenticated) { 
        //... 
    } 
}

使用<text></text>标记

包装所有html / text元素

答案 1 :(得分:1)

你错过了一个结束“/ div”在这段代码中:@ Html.DisplayFor(modelItem =&gt; item2.Body)。这可能是它出错的原因。

答案 2 :(得分:0)

这是第一个区块中未关闭的div,第二个区块中的额外结束/div。剃刀对这种事情非常挑剔。

修复后,您会遇到其他一些语法问题,例如item未在第三个区块中定义,但您应该可以处理这些问题。