MVC5在视图

时间:2017-07-27 17:38:34

标签: json asp.net-mvc asp.net-mvc-5 double-quotes viewbag

我的网络应用程序出现问题,我从数据库中检索数据,然后将其通过ViewBag传递给View,最后将数据转换为javascript对象。

这是虚拟数据的示例

控制器

public ActionResult Index()
{
    var boxer = new
    {
        Name = "Juan Manuel Márquez",
        Division = "Welterweight"
    };

    ViewBag.Data = new
    {
        Boxer = boxer
    };

    return View();
}

查看

<div>
    Hello there!
</div>

@section scripts {
    <script>
        $(document).ready(function() {
            var myModel = JSON.parse('@Html.Raw(Json.Encode(ViewBag.Data))');
            console.log(myModel);
        });
    </script>
}

结果如预期:具有模型属性的对象。但问题是拳击手的名字包括他的别名,例如:

var boxer = new
{
    Name = "Juan Manuel \"Dinamita\" Márquez",
    Division = "Welterweight"
};

这导致下一个错误,因为JSON.Encode生成一个JSON字符串而没有转义引号

  

VM38:1未捕获的SyntaxError:位于31的JSON中的意外标记D.       在JSON.parse()       在HTMLDocument。 (指数:53)       在火上(jquery-1.10.2.js:3062)       at Object.fireWith [as resolveWith](jquery-1.10.2.js:3174)       在Function.ready(jquery-1.10.2.js:447)       在HTMLDocument.completed(jquery-1.10.2.js:118)

有什么建议吗?

此致

1 个答案:

答案 0 :(得分:2)

你不需要Json解析这里尝试

  @section scripts {
        <script>
            $(document).ready(function() {
                var myModel =@Html.Raw(Json.Encode(ViewBag.Data));
                console.log(myModel);
            });
        </script> }

并删除@ html.Raw中的单引号 它应该看起来像

 var myModel =@Html.Raw(Json.Encode(ViewBag.Data));