【问题标题】:System.Web.HttpParseException: 'Unexpected "{" after "@" characterSystem.Web.HttpParseException:'“@”字符后出现意外的“{”
【发布时间】:2018-12-29 02:03:10
【问题描述】:

我在尝试渲染 PartialView 时遇到了这个异常。当我更改@{Html.RenderPartial("_ChildReplies", parRep.ChildReplies);}
@Html.Partial("_ChildReplies", parRep.ChildReplies) 仍然出现同样的异常。

@model List<Reply>

@using YourPlace.Models

<ul>
@foreach (var parRep in Model)
{
    <li>
        Author: @parRep.AuthorName
        Comment: @parRep.AuthorName
        <div>
        @{Html.RenderPartial("_ChildReplies", parRep.ChildReplies);}
        </div>
    </li>
}
</ul>

【问题讨论】:

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


【解决方案1】:

上面的代码看起来正确...如果您收到此错误,可能是因为 _ChildReplies 部分视图中出现了问题,您没有在其中显示你的问题...


Good explanation here:

  • RenderPartial() 是写入响应流的 void 方法。 C# 中的 void 方法需要一个 ;因此必须由 { }。
  • Partial() 是一种返回 MvcHtmlString 的方法。在 Razor 中,您可以调用返回此类字符串的属性或方法,只需 @ 前缀以将其与页面上的纯 HTML 区分开来。

所以你需要使用这个:

@{ Html.RenderPartial("_ChildReplies", parRep.ChildReplies); }

或者这个:

@Html.Partial("_ChildReplies", parRep.ChildReplies);

【讨论】:

  • 谢谢。我检查了 _ChildReplies PartialView,确实存在错误来源。我包装了 '@{ Html.RenderPartial("_ChildReplies", parRep.ChildReplies); }' in 'if block' 所以只需删除 '@' 即可解决问题。
猜你喜欢
  • 2015-01-17
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 2011-10-09
  • 1970-01-01
相关资源
最近更新 更多