首页 > 解决方案 > 如何从 c#(Razor Syntax) 中的对象列表转到 javascript 中的数组或对象?

问题描述

使用 Newtonsoft.Json 的序列化成功创建了一个 json 文本:

@model IEnumerable<CardGameApp.RootObject>

@{
    ViewData["Title"] = "Game";
    Layout = "~/views/Shared/_Layout.cshtml";

    List<CardGameApp.RootObject> deck1 = Model.Take(40).ToList();
    List<CardGameApp.RootObject> deck2 = Model.Skip(40).ToList();

    var json1 = Newtonsoft.Json.JsonConvert.SerializeObject(deck1); 
    var json2 = Newtonsoft.Json.JsonConvert.SerializeObject(deck2);
}

而第二个任务会引发如下错误:

Uncaught SyntaxError: Unexpected token o in JSON at position 1 at JSON.parse ()
var _deck1 = JSON.parse(@Html.Raw(json1));
var _deck2 = JSON.parse(@Html.Raw(json2));

如果我将 '' 放在括号内,如下所示:

var _deck1 = JSON.parse('@Html.Raw(json1)');
var _deck2 = JSON.parse('@Html.Raw(json2)');

它会引发如下错误:

Uncaught SyntaxError: missing ) after argument list.

任何提示都会有所帮助!

标签: javascriptc#jsonasp.net-core-mvc

解决方案


由于 JSON 是有效的 JavaScript 代码,因此您在 JavaScript 中所要做的就是:

var _deck1 = @Html.Raw(json1);
var _deck2 = @Html.Raw(json2);

基本上,JSON 成为脚本标记中的 JavaScript 对象文字。


推荐阅读