【问题标题】:JavaScript crashing due to HTML entities in JSON string由于 JSON 字符串中的 HTML 实体导致 JavaScript 崩溃
【发布时间】:2013-02-02 13:08:26
【问题描述】:

我正在使用NewtonSoft.Json.JsonConvert.SerializeObject() 将 ASP.NET Dictionary 对象序列化为 JSON 字符串。然后我通过 ViewBag 将此字符串传递给我的 MVC 视图。

当我在我的 MVC Razor by Razor 语法中尝试将 JSON 字符串从 ViewBag 加载到 JavaScript 变量中时,我的 JavaScript 由于语法错误而崩溃。当我检查源代码时,我发现:

var hf = {"Test0":65,"Test1":23,"Test2":43,"Test3":6,"Test4":31,"Test5":78,"Test6":1,"Test7":53,"Test8":74,"Test9":54};

这是我在视图中加载 ViewBag 内容的逻辑:

@section RenderChart
{
<script type="text/javascript">
    google.load("visualization", "1", { packages: ["corechart"] });
    function drawChart() {
        var hf = @ViewBag.ChartJsonData;

由于某种原因,我的 JSON 字符串被 HTML 编码。在通过Server.HtmlDecode() 运行它后,我尝试将它传递到 ViewBag 中,但这并没有帮助。有谁知道我如何解码这个字符串或将它传递给我的 MVC 视图中的 JavaScript 而不将它转换为 HTML 实体?

【问题讨论】:

  • 您可以发布从 ViewBag 输出 JSON 的视图的相关部分吗?
  • @nemesv 啊,是的,很抱歉漏掉了!我现在已经用相关代码更新了原帖。

标签: javascript asp.net-mvc json razor


【解决方案1】:

如果使用@ 输出,Razor 会自动对每个字符串进行 HTML 编码。

如果你不想要 HTML 编码,你需要用 Html.Raw 包装你的字符串:

<script type="text/javascript">
    google.load("visualization", "1", { packages: ["corechart"] });
    function drawChart() {
        var hf = @Html.Raw(ViewBag.ChartJsonData)
    }
</script>

【讨论】:

  • 当然!我已经忘记了。自从我做网络编程以来已经太久了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2018-09-03
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多